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. Relational data models are emphasized. It begins with an overview of networking technology in support of data and multimedia communication.
Students work in multi-person teams of software projects of significant scale.
Students learn techniques of project planning, scheduling, costing and organization, and apply them in the context of a multi-person project. A key emphasis is management of client issues.