| General | |||||||||||
Earning a Grade If you wish to earn a grade in this course, you must print this page, sign it at the top-right, and initial the segments on communication, pair programming, and keeping a journal. Your signature acknowledges that you have read and understood this page and the special segments. Lectures Mon, Tue, Thu @ 4:05 in SH 315 Staff
Matthias Felleisen (Egan 222C) matthias-remove-this@ccs.neu.edu
Organization The course is a "studio" course. This means that I will present fundamental software design techniques during class on some occasions and that for most meetings we will conduct public design walks and code walks. The purpose of the design/code walks is to learn how to reason about properties of software and how to explain them to colleagues. Communication Course business will be conducted in a mostly paperless fashion. Consult the Web pages on a regular basis. For information about an assignment, post to the newsgroup. For private inquires, use email as needed. Projects The goal is to assign approximately one project per week. The projects will include writing assignments, modifications of Java programs, designing and implementing a project from scratch, and maintaining/modifying your own code. Pair Programming and Timing 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 asap.You may switch partners after consulting with the course staff and discussing the work log together. For your own sake (this is about learning, not just getting a grade, right?), 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. Programming Languages For in-class demonstrations and discussions, I will use UML diagrams, mainstream object-oriented languages such as C# and Java and possibly some OO concepts from research languages such as Scheme or scripting languages such as Python. For projects, you are free to choose whatever language you wish to use. You may also switch your language of choice over the course of the semester. Journal Everyone must keep a work journal. Every time you work on something related to this course, enter the following information (one line each): what (topic),We will review the notebooks in case of conflicts and in case of borderline grades. Don't forget to enter time estimates at the beginning of each project. Grades The first goal of this course is to learn to think about software design. The second goal is to set you free from teachers, that is, to help you learn on your own for the rest of your career; otherwise you won't be able to sustain a job in this dynamic field. (And how else do you justify this kind of tuition?) An ungoal is to get a grade. But, I will use grades to make sure that when you say you passed my course, people know that it means something. Grades are assigned based on project completion and journals (70pts); each project is worth a number of points. The projects indicate the value of each part. You also get 20/5 points for active/passive participation in project presentations (20/5). For each presentation, each partner is assigned a separate grade, depending on performance and understanding of the complete project. The remaining 5% are up to the instructors' whim. In total, the course will be worth around 100pts, but you need only 80pts for an A. It is up to you to choose which points you wish to obtain and which ones you will drop. This idea represents the value of project components for developers; they may also choose which functionalities to implement and which ones to drop. If the need arises, I will give short in-class exams on reasoning techniques and tools. I may also conduct personal interviews, as needed. | ||||||||||||
| last updated on Tue May 20 10:42:57 EDT 2003 | generated with PLT Scheme |