Level:
Undergraduate
Instructors:
Prof. Daniel Jackson
Prof. Robert Miller
For Project 3, students were asked to design and implement an instant
messaging system. This submission won the award for the most aesthetic
user interface. (Courtesy of Sinchan Banerjee, Kristie D'Ambrosio, Itai
Turbahn, and Victor Wang. Used with permission.)
Course Features
Course Description
This course provides an introduction to the fundamental principles and
techniques of software development that have greatest impact on
practice. Topics include capturing the essence of a problem by
recognizing and inventing suitable abstractions; key paradigms,
including state machines, functional programming, and object-oriented
programming; use of design patterns to bridge gap between models and
code; the role of interfaces and specification in achieving modularity
and decoupling; reasoning about code using invariants; testing,
test-case generation and coverage; and essentials of programming with
objects, functions, and abstract types. The course includes exercises
in modeling, design, implementation and reasoning.
Technical Requirements
Special software is required to use some of the files in this course: .java and .jar.