ECE 391 - Computer Systems Engineering

Summer 2009 | Fall 2009 | Spring 2010 | Summer 2010
Section Type Times Days Location Instructor
AD1 DIS 1400 - 1450 T   168 Everitt Lab  Steven Lumetta
Simion Venshtain
AD2 DIS 1100 - 1150 W   168 Everitt Lab  Steven Lumetta
Christopher Co
AD3 DIS 1300 - 1350 W   168 Everitt Lab  Steven Lumetta
Thaddeus Koehn
AL LEC 1100 - 1220 T R   253 Mechanical Engineering Bldg  Steven Lumetta

Web Page http://courses.ece.uiuc.edu/ece391/
Official Description Introduction to the concepts and abstractions central to the development of modern computing systems, with an emphasis on the systems software that controls interaction between devices and other hardware and application programs. Input-output semantics, synchronization, interrupts, multitasking, virtualization of abstractions. Emphasis on learning to operate effectively in teams. Credit is not given for both ECE 391 and CS 241. Prerequisite: ECE 290 or CS 231.
Hours 3 hours.
Subject Area Computer Engineering
Course Prerequisites Credit in ECE 290 or CS 231
Course Directors Steven Sam Lumetta
Description Introduction to the concepts and abstractions central to the development of modern computing systems, with an emphasis on the systems software that controls interaction between devices and other hardware and application programs. Material includes input-output semantics, synchronization, interrupts, multitasking, virtualization of abstractions. Emphasis on learning to operate effectively in teams.
Credit 3 hours
Topics
  • review of computer organization and representations
  • x86 assembly: review of basic constructs and structures, interfacing C to assembly, macros, stack frame and calling convention
  • simple data structures: queues, heaps, stacks, lists
  • synchronization: primitives, memory semantics, mutual exclusion, semaphores, scheduling, and race conditions
  • interrupts: controlling generation and handling, chaining, cleanup code, interactions with device functionality
  • resource management: virtualization and protection, virtual memory and hardware support
  • exceptions and signals: exceptions due to instructions, memory accesses, and floating-point operations; signal semantics and delivery
  • device programming: basic abstractions, character and block devices
  • file system abstractions: disk layout, access control lists and capabilities, log-structured and traditional filesystems as design problem
  • I/O interface: file descriptors, buffering, control operations, memory mapping
  • networking programming: socket abstractions, basics of low-level network protocols, relationship to kernel I/O abstractions
Course Prerequisites ECE 290 or CS 231. Recommended: ECE 190.