CS 257: Software Design

Course Information

Rough schedule

I may reorder some things along the way, but the schedule will look more or less like this:

Languages

At various times during the course, we will use Python, Java, and Javascript. We'll also use tools that aren't strictly programming languages, like HTML, CSS, and Postgresql. For the final project, you will be free to use the tools of your choice, within reason.

Working together

This course focuses on ways to make each of you a better software designer and developer. If you learn most effectively by tackling a problem on your own, then you should work alone. If you gain more by bouncing ideas off another person, you may work with a partner on any assignment.

Code reviews

For some programming assignments during this term, we will have code reviews. For our purposes, a code review will be a meeting of the students at one of the tables in Weitz 235, with drop-in interruptions by me. The goal of each code review will be to will discuss the strengths, weaknesses, and other interesting features of each student's solution of a particular programming problem. Code reviews are one of the most efficient and powerful tools I know of for improving your software, but of course most people feel a fair amount of apprehension at the idea of discussing their code in detail in front of other people. Thus, it's essential that each participant in a code review prepare thoroughly by studying everybody else's code, and by preparing positive comments, constructive criticism, and plenty of questions. We'll discuss the details of our code review process before the first code review.

Grading

Your grade will be based on your performance on a variety of assignments, and and on your participation in the code reviews. The assignments will include a little bit of writing, several programming assignments, and at least one revision of a programming assignment. There will be no exams in this class.