CMSC 22001: Software Construction




Code Walks


Course overview


This web page is for the students who attend the Tuesday/Thursday meeting of the class, regardless of the course number they are registered for.

Mailing List
You must subscribe to the mailing list. Occasionally, important announcements are posted there between classes.
Subscribe / Info   Archives
Required text
Gamma, Helm, Johnson, Vlissides Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading MA 1995.
The text is as necessary for a software developer as a dictionary for an English writer.
Reccommended texts
Felleisen, Findler, Flatt, Krishnamurthi How to Design Programs MIT Press, Cambridge MA 2001
Beck Extreme Programming Explained Addison-Wesley, Reading MA 1999
Fowler, Scott UML Distilled Addison-Wesley, Reading MA 1997
Pair Programming
All projects must be implemented via pair programming. Pair programming means that you do all things together. That is, you must choose a partner with whom you wish to work on projects as soon as possible. You may switch partners after consulting with the course staff and discussing the work log together.
Journal & Estimates
Each person must keep a work journal (individually). Every time you work on something related to this course, enter the following information (one line each):
  • what (topic),
  • when (date, time),
  • where (location),
  • who (working partner),
  • and how long (duration).
Please estimate at the beginning of each project how much time you think it will take. Enter the estimate in your journal. As the course progresses, try to understand how much you over/underestimate and try to correct for it. We will review the notebooks in case of conflicts and in case of borderline grades.
Programming Language

For in-class demonstrations and discussions, I will use UML diagrams, Java and possibly some OO concepts from research languages such as Scheme.

For projects, you are free to choose whatever language you wish to use.

There will be one assignment per week. The assignments will include writing short essays, modifications of Java programs, designing and implementing programs from scratch, and maintaining/modifying your own code.

Grades are assigned based on two factors: your class participation and your code presentations. Your weekly homework may have some influence in boundary cases.

Robby Findler