Students learn to develop designs that are usable and useful for people. Students learn how to empirically evaluate user interfaces, leading to better ones. Visual Basic is used in programming assignments. This course focuses on understanding the dependence of execution time, bandwidth and memory requirements on the data structures and algorithms chosen. Students learn to reason informally about algorithm and data structure correctness and complexity.
Primary emphasis is given to intelligent selection of algorithms and representations.
This course provides students with a user-level view of processors, networks and operating systems. Students learn explicitly about assemblers and assembly code, program performance measurement and optimization, memory organization and hierarchies, network protocols and operation, and concurrency. Programming assignments use the C programming language. This course introduces students to database concepts including database design. Relational data models are emphasized.