Full Syllabus
Harvard University Extension
CSCI-E237 Distributed Programming using Microsoft .NET
Spring 2008
53 Church Street, Room L01
First Meeting Monday, Jan 28 7:35
Taught by David S. Platt, M.E.
Preliminary (as in NOT final, still might change and probably
will) Syllabus
Last Updated: 12/03/07
Prerequisites
This is an advanced course that requires at least a year of
experience in combat programming. Your must possess knowledge
of .NET equivalent to Joe Ficara's fall term class
CSCI-E230.
You must be fluent in either C# (ideally) or Visual Basic.
All class samples will be shown in C# unless a guest
lecturer insists on presenting otherwise.
Textbook
This class covers a great deal of territory, so there is no
single textbook that covers it all. A number of books will
be mentioned in class, and electronic course notes will be
provided for some of the lectures. These are posted in the
Files section of the discussion forum, described later in
this syllabus. The notes for the first lesson are in
this book chapter.
WARNING: This list of topics is ALWAYS subject to
change, based on late-breaking or quickly evolving technologies,
or availability of guest speakers.
| 1 |
Jan 28 |
Introduction to ASP.NET |
| 2 |
Feb 4 |
ASP.NET Custom Controls |
| 3 |
Feb 11 |
AJAX in ASP.NET (Business problem
analysis rough draft due, previous year's samples
posted) |
| |
Feb 18 |
(No Class, President's Day Holiday) |
| 4 |
Feb 25 |
Guest Lecture: Jesse Liberty, speaking on
Silverlight (Business problem final analysis due) |
| 5 |
Mar 3 |
Guest Lecture, Joe Ficara speaking on
MSMQ |
| 6 |
Mar 10 |
Web Client Software Factory |
| 7 |
Mar 17 |
Introduction to Web Services (Solution architecture
rough draft due, previous year's samples posted) |
| |
Mar 24 |
(No Class, Spring Break) |
| 8 |
Mar 31 |
Windows Communication Foundation |
| 9 |
Apr 7 |
.NET Remoting (Solution architecture
final submission due) |
| 10 |
Apr 14 |
Windows Cardspace |
| 11 |
Apr 21 |
Windows Workflow Foundation |
| 12 |
Apr 28 |
Windows Presentation Foundation |
| 13 |
May 5 |
Composite UI Application Block |
| 14 |
May 12 |
Term project demonstration and party in
Ipswich MA |
| |
May 19 |
Last day for submitting term projects by
1700 ET (no class planned) |
Term Project
This class is graded solely on a term project, which will
take the entire spring term. The choice of problem domain
is left to you. It can involve system programming, application
programming, or some combination. I would strongly suggest
that you choose a problem domain that you know inside-out
and about which you care deeply. Fixing something that's always
bugged you might be a good idea. Second choice would be
a problem domain that you have always been curious about but
never had an excuse to investigate. The only technical requirement
is that your design make use of the topics of at least five
of the class's lectures.
The term project requires three separate deliverables.
They are:
1. Thorough analysis of business problem
(30 %, Rough draft due on Mon Feb 11, final submission
on March 3) . This document describes the business problem
that you have decided that your software project will solve.
It discusses who the users are, what they want to accomplish,
why this is something they care about, and how strongly they
care. It will probably involve some amount of financial calculation
(for example, the amount that users would save in money or
time or better business results if their problems were solved,
or the amount they would pay for such savings) . There should
be no discussion of the software that would solve the problem,
although existing unsatisfactory systems may be described
by way of background. The size of this report is roughly equivalent
to an article that I would write for MSDN Magazine, about
5000 words and 10 figures, +/-.
To encourage the necessary reflection, a rough draft is due
on Feb 11. While it will not be graded for points, it MUST
represent a reasonable, good faith effort to grapple with
the problem, and must contain something resembling two weeks
worth of thought. Your TA will return it with comments and
suggestions to be considered for your final submissions.
2. Architectural analysis of software system
to solve business problem (30%, due on Monday April 7).
This document describes the software system that you have
decided will solve the business problems that you wrote about
in the previous example. As with the previous one, the size
of this report is roughly equivalent to an article that I
would write for MSDN Magazine, about 5000 words and 10 figures,
+/-.
A rough draft of this document is due on Monday March 17.
It is required in the same way and for the same reasons as
is the rough draft of the business problem analysis.
Note for Parts 1 and 2: It is entirely fair and reasonable
for any student being asked to submit any sort of work for a
grade to request and receive guidance as to exactly what that
finished work ought to look like. At the same time, surprisingly
few students report that they have ever been required to think
about computing problems in this specific way; that lack being
one of the main reasons that software being developed today
really sucks (see my book chapter online at
www.whysoftwaresucks.com). I want you to come to this
problem with a blank slate if at all possible. Therefore,
successful samples of these submissions will be posted
only on the day following the rough draft due dates (Feb 11 and
March 17). You will see successful examples of these submissions
in time to take them into account in constructing yours, but you
will have to bang your head against the bare problem first. From
such pain comes innovation and learning.
3. Proof of concept program (40%, ideally
due at demonstration party on May 12, absolute last instant
for delivery 1700.00.0 ET on May 19). This is the actual working
program that demonstrates your solution. It should exercise
all important parts of your solution, involving the five separate
lecture topics that you have chosen. We won't be grading on
robustness or covering edge cases, except to whatever degree
these are the specific business problems addressed by your
project. You may assume that users
will enter only valid input (exception ditto). No rough
draft is required for this stage. The final project will be
graded by your TA in an interactive session using WebEx or
LiveMeeting. So it only needs to run on your PC.
Submission DeadlinesThe submissions
required for Parts 1 and 2 of the term project, both rough draft
and finished, are due by 2359 ET on the dates listed. Lateness
is penalized by 1 percentage point off your TOTAL final class
grade for each calendar day or part thereof by which your
submission is late, up to a maximum of 5 points per submission.
The final project is not accepted past the required submission
time under any circumstances.
While deadlines are given for delivery, you are by no means
required to wait until then. I strongly encourage you to submit
your deliverables to your teaching assistants early for comments
and corrections. There is NO PENALTY for early submissions
and corrections. The document that is current as of the deadline
is the one that will be graded. So you can iterate as much
as you feel is cost-effective, and I strongly encourage you
to do so.
Because deadlines are announced far in advance, and because
early submissions are accepted, extensions for deliverables are
given solely for unexpected life- or health-threatening
situations in you or your family. Extensions are particularly
never granted for any sort of business workload or travel, or
computer breakdown.
Here is a suggestion: at
this link you will find an excerpt from my book
Why
Software Sucks. It deals with my judging the Imagine Cup,
a programming contest at Tech Ed a few years ago. I point
you to Tu Nguyen's winning project, SPECIFICALLY HIS EXCELLENT
PROBLEM DEFINITION. Read this article at the beginning of
class, sleep on it for a few nights, and then start thinking
how you are going to, in my own words: "Rather than using
technology for its own sake, Tu focused with laser precision
on the business problem he was trying to solve. This small,
simple, beautifully tailored system dramatically lowered the
friction of almost every aspect of running this restaurant."
That's the sort of project that will get you an A.
Hardware and Software
This course requires extensive programming homework. Harvard
provides some .NET computers at its 53 Church St facility,
but you will not want to depend on them for completing this
course. You will want to have your own hardware and software
development environment. Get the biggest meanest fastest PC
you can find, with all the RAM and disk in the world. You'll
need it all.
You will need either Windows XP Professional operating system
with Service Pack 2. Windows 2003 Server will probably work.
We will not support NT, any of the 95/98/Me family, or XP
Home. We will do our best to support Vista, but as with so
much else in the operating system, you're in the arms of
Saint Bill, for better or worse.
You will require Microsoft Visual Studio .NET 2005 with the
.NET Framework v2.0. The free Express editions from Microsoft's
web site will probably get your through it. For some features,
notable WCF, you will also need the new .NET 3.0 SDK which
you can get from the Microsoft web site. We reserve the right
to require you to add service packs and updates as we discover
the necessity. If you want to use any language other than
C# or Visual Basic, you will have to consult with the instructor
first, and we might not allow it. We will probably support
Visual Studio 2008, but because of its recent publication,
this support will probably not cover 100% of it.
You will need an e-mail account and Web access. You will
probably not find a dial-up modem line's performance satisfactory,
so I'd try to get at least a cable modem.
Cell Phone Policy
All cell phones, beepers, pagers, or other audible communication
devices shall be turned off before the beginning of class
and shall remain off for the duration of class. Setting them
to vibrate is NOT sufficient, as leaving to take a call and
then returning is disruptive in and of itself. If you cannot
do without your connectivity for two hours, then don't come
to class.
If such a
device emits any sort of noise for any reason other than a
medical emergency, the carrier of said device shall be ejected
from class for the remainder of that evening. A medical emergency
is defined as a situation of a medical nature that is of such
importance that you need to leave class immediately to attend
to it. If that thing rings, you're out of there for the night,
one way or the other.
Contact Information
Due to suggestions received last year, we are taking steps
to make faculty and TA's more easily available. Everyone is
contactable by E-mail, and we urge you to use this channel.
TA's will provide their phone numbers to their individual
students. I have explicitly instructed the TA’s that
they are not to waste their time playing telephone tag. If
you call them and they aren’t there, they will return
your call once and then no more. Use e-mail, that’s
what it’s for. The e-mail addresses of the staff are:
| David S. Platt |
Instructor |
cscie237 |
rollthunder |
com |
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
*separated to avoid spam spiders
When you contact a TA for help with your homework, you must
provide source code for them to look at. I have instructed
them that they are not to waste their time trying to figure
out problems unless they are looking at code. This will speed
up problem diagnoses by one to three orders of magnitude.
No one can diagnose problems over the phone based on a student's
telephone or e-mail description of a problem, because the
description is inevitably part of the problem. The bug isn't
where you think it is; if it was, you'd have fixed it already.
When choosing which pieces of code to send, err on the side
of completeness.
Sections
A TA will appear live in the forum (see below) chat room
on a schedule to be announced.
Course Home Page
This class has a home page. Its URL may change, but you can
access it by going to my home page at http://www.rollthunder.com
and picking the link for Harvard. Any changes posted in the
"Updates" section of this page are officially incorporated
into and made part of this syllabus by reference.
Internet Discussion Forum
To make it easier for you to talk to the TA’s and to
each other, I am providing an Internet discussion forum on
Yahoo Groups [link TBA]. Only registered students can join. I'd
suggest that you do this in advance, so you don't have to
wait for your request to be approved when you need to post
your first question. You can choose any nickname for use on
the forum, but you must include your real name in
your joining request so I can verify you against the class
list.
If you have a question about your own individual grading
or administrative problems, contact your TA directly. Please
use the forum as the entry point for all questions whose answers
might be of general interest, such as questions on the homework.
Because we have coverage of the forum spread out among different
TA’s at different times, this will get you the fastest
answer. If you send an individual e-mail message to me or
to a TA, we might not check our mail that day and your answer
may be delayed. Unless you are working a specific problem
with a specific person, you will get the fastest service if
you take whichever doctor is on call. Posting messages to
the forum will also allow other students to benefit from the
answer sent to you.
Occasionally there will be a topic for which I need to forbid
forum discussion, generally when I assign a problem that has
a very simple answer that requires a lot of searching. The
learning experience is in the searching, not the final answer.
These will be clearly identified as such in the homework assignments,
at which time you will need to comply with them.
Please note: Tempers tend to run high in this class, especially
around the fourth or fifth weeks when students fall behind
on their homeworks and can’t see the end. E-mail is
a cold medium; you don’t see a person’s gestures
or facial expressions or tone of voice. Statements that would
be polite in face-to-face conversation can very easily come
across as nasty through e-mail. Please think carefully about
what you are writing and how it might be perceived by the
readers, and try to be nicer in the forum than you would be
in person. Trust me, the impersonality of the medium more
than evens it out.
Employers frequently find this list to be a good place to
post messages looking for new hires. You may post a message
for your company, subject to the following guidelines. Spare
us the SPAM about "empowered employees enabling a dynamic
challenging diverse workplace using state-of-the-art technology
to produce innovative solutions …" Just tell us
your company’s name and location, the type of products
it makes, what the job would be doing and what it requires.
And principals only, NO HEADHUNTERS UNDER PAIN OF IMMEDIATE
AND PERMANENT EXPULSION FROM THE FORUM.
This forum is my own private property; therefore freedom
of speech does not apply on it. Anyone whose actions are,
in my own sole and absolute judgment, detrimental to the forum
may be removed without warning or appeal.
|