Harvard University Extension  

CSCI-E237   Distributed Programming using Microsoft .NET

Spring 2007

53 Church Street, Room L01

First Meeting Monday, Jan 29 7:35

Taught by David S. Platt, M.E.

Preliminary (as in NOT final, still might change and probably will) Syllabus

Last Updated: 01/10/11

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 know or be able to acquire very quickly either Visual Basic, C#, or another .NET programming language.

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 two lessons 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.

Topic List

Lesson #

Date

Topic

     
1 Jan 29 Introduction to ASP.NET
2 Feb 5 ASP.NET Security
3 Feb 12  ASP.NET Caching (Business problem analysis rough draft due)
  Feb 19 (No Class, President's Day Holiday)
4 Feb 26  ASP.NET Custom Controls
5 Mar 5 AJAX and ATLAS in ASP.NET (Business problem final submission due)
6 Mar 12 Introduction to Web Services
7 Mar 19  Guest Lecture, Joe Ficara speaking on MSMQ (Solution architecture rough draft due)
  Mar 26   (No Class, Spring Break) 
8 Apr 2 Windows Communication Foundation, part 1 (Solution architecture final submission due)
9 Apr 9 Windows Communication Foundation, part  2
10 Apr 16  .NET Remoting
11 Apr 23  Windows Workflow Foundation
12 Apr 30 Guest Lecture:  Windows Cardspace
13 May 7 Composite UI Application Block
14 May 14 Term project demonstration and party in Ipswich MA
  May 21  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. A distant second 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 by 2359 ET on Mon Feb 12, final submission on March 5) . 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 12. 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 like two weeks worth of thought. Your TA will return it with comments and suggestions to be considered for your final submissions.  A penalty of 1 point of your TOTAL CLASS GRADE will be assessed for each calendar day or part thereof it is late, beginning at 0001 on Thurs Feb 14, up to a maximum of 5 points.

2. Architectural analysis of software system to solve business problem (30%, due by 2359 ET on April 2). 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 19. It is required in the same way as the rough draft of the business problem analysis.

3. Proof of concept program (40%, ideally due at demonstration party on May 14, absolute last second for delivery 1700 ET on May 21). 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. You may assume that users will enter only valid input (unless, of course, validation of input is part of your project).  No rough draft is required for this stage. However, you are encouraged to discuss it with your TA on an ongoing basis, possibly submitting portions of it or even complete intermediate versions for consideration. No penalties shall be imposed for the functionality or lack thereof of any intermediate version. Only the final submission counts for your grade, so I'd suggest you take advantage of this. 

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.

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 may or may not decide to support Vista, depending on market acceptance.

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.

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. 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:

Name Position

 

E-mail alias E-mail domain (separated to avoid spam spiders) Dot (ditto)
David S. Platt Instructor cscie237   rollthunder com
John Belge TA jbelge rcn com
Prakash Govind TA prakashgovind comcast net
Greg McKinley TA greg gregmckinley com

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 at this link here.  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.

As in previous years, I will offer prizes for the student that gives the most help to other students on the discussion forum. At a class meeting near the end of the term, each attending student will be asked to vote for the single student that helped him the most on the discussion forum. The votes will be tallied on the spot and the winner announced at the end of the class. First prize is $100 cash, second is $50 cash. In the event of a tie, the relevant prize(s) will be divided among the tying students.

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.