|       Software: description      |       2002-03      |       Michael Siff       |
from the course catalog:
Donald E. Knuth, one of the world's most distinguished computer scientists, has said both "computer programs are fun to write" and "software is hard". The goal of this course is to give students a taste of what it is like to design and develop real software. The quotes by Knuth illustrate two themes of this course that are not necessarily at odds: The challenge of writing good software should not offset the pleasure derived from writing it. Some of the main topics we will cover include why developing reliable software is inherently difficult, the importance of abstraction, the separation of design from implementation, and how to write software in teams. We will study data structures such as hash tables, trees, and graphs; algorithms such as dynamic programming and greedy algorithms; and programming paradigms such as network sockets and interprocess communications. This course will involve several substantial software projects including a year-long group project. Permission of the instructor is required. Students should have at least one semester of programming experience, preferably in C, C++, or Java.
| software home | assignments | contact instructor |