Architecture of computer systems: representation of data; processor, memory and I/O organization. Assembly language programming. C programming language constructs and their relationship to the underlying architecture. Basics of operating systems: interrupts, concurrency, process scheduling, security, networking.