Description

CS531 provides a hands-on introduction to the systems level of programming with an emphasis on data structures and interfacing with the operating system. This course focuses on the fundamental data structures necessary for designing and implementing systems applications and continues with an introduction to the Unix Application Programming Interface (API), signals, threads, and inter-process communications (IPC). This course is instructed from a programmatic perspective using the C programming language, with special topics in both Java and Python.

The objective of this course is to focus on the principles and pragmatic methods for designing and implementing solutions to problems in Computer Science. The course will be instructed in the C programming language and the techniques instructed will be relevant for low-level or systems programming tasks. The data structures and algorithmic design aspects of the course are relevant across many different fields and are language independent. We will, however, implement several of these in C.

This course will prepare you directly for CS571 (Operating Systems) and CS555 (Networking), as well as for CS540 (Language Processors), CS550 (Database Systems), CS551 (Computer Graphics), and CS580 (AI).

Topics for this semester will include.

C Programming Language
Foundations, Control and Functions,
Memory and Pointers, Structures
File I/O and Command Line Arguments
Unix API Calls
Dynamic Memory Access and Dynamic Arrays
Analysis of Algorithm Complexity
Stacks, Queues, and Linked Lists
Hashing, Trees, and Graphs
Heaps and Priority Queues
Unix Processes, Signals, Exceptions, and I/O
Concurrency and Synchronization
Inter-Process Communications
Python and Java Overviews

General Information

Lecture Information
Tuesdays, 7:20pm - 10:00pm in Exploratory Hall, room L004

Announcements

Announcements are not public for this course.
Staff Office Hours
NameOffice Hours
Kevin Andrea
When?
Where?
Prashant Sahu
When?
Where?