Jan Vitek

Graduate TAs
Nadya OrtizDerek Schatzlein, Nathan BurowDerek Li, Josh Reese, Shuvra Nath

Undergraduate TAs
Clyde Byrd III, John Vall, Matthew Tracy, Nikolas Ogg, Cody Phrampus, Xiangyu Bu, Yao Xiao, Prithvi Dhelia, Scott Wilkewitz, Andres Bravo, Leo Azopardo, Jisoo Kim, Yusen Zhang, Huy Phan, Saranyu Phusit


All questions about any assignments or exams must be posted on the class Piazza page. Any questions regarding grades should also be asked on Piazza as a private post. We will make important announcements on Piazza throughout the semester, enroll before the start of the semester. The site is:

Piazza Etiquette

  • Use the search box first to see if the question you want to ask has already been answered.
  • When asking a question, be clear and concise. If it's a specific bug with your lab, state your problem, attempts to locate/debug the problem, and where you think the problem might be related to or what you think is ultimately causing it.
  • Never post code. 
  • Questions along the lines of "program doesn't work, please help" can not be answered.
  • If you follow these guidelines, it will ensure that we maintain as maximum a response time and readability as possible. We'll be happy to give you hints and explain confusing concepts, but it is ultimately up to you to complete your project.

Lecture Times

9:30 am - 10:20 am TR Electrical Engineering Bldg 129

Help Sessions
New: A help session devoted entirely to CS 240 students will take place on Mondays from 4 - 6pm in LWSN B158. Additionally, at least one UTA will be sent to the USB help room in LWSN B131 on Wednesdays from 7 - 9pm for additional help on labs/projects.


Experience programming at the level of CS 180.


C Programming Language; Kernighan & Ritchie


After completing this course you will be able to program medium size applications in "C" using the UNIX environment.

Course Description

This course provides an introduction to programming in the C programming language through a number of practical exercises. C is one of the most widely used languages for implementing complex software systems, ranging from operating systems to web browsers or virtual machines. This course will overview the main features of the language and give students an appreciation of their power. Lab and projects will complement the lectures.

Course Deliverables

There will be seven labs [0...6], four projects [A...D], three exams and ten clicker quizzes [a...j]. There will be no extensions on any assignments. No late assignments will be accepted.

Labs are due the next Friday after the week they're assigned at 8:00 pm. For example, if lab 0 is assigned during the week of January 13-17, then it will be due by January 24th at 8:00pm.

Projects are due the next Friday after two weeks they're assigned at 8:00 pm. For example, if Proj A is assigned during the week of March 10-14, then it will be due by March 28th at 8:00pm.

Virtual Machine 

We have provided a  VMWare image containing all software, tools, and libraries that you will need for your assignments. The user name of the default account is “cs240” and the password is the same.  Students who do not already have VMWare installed on their personal machines can do so by downloading the free VMWare player. Another free alternative is Virtual Box  that runs on Windows, Linux, Macintosh, and Solaris.

Course Expectations

The course is designed with the expectation that you will attend the lectures, read the book ahead of time, and come to the lab sessions.  Lab sessions and lectures regularly have clarifications, and hints which may not be in the notes or in Piazza.

Week  Tuesday Thursday  Labs, Quizzes, Projects
 1/13 Introduction                                   Video C overview     Read: Ch.1               Video  0, a    
 1/20 Data types    Read: Ch.2    Part-I  Part-II Control flow    Read: Ch.3               Video  1, b, c     
 1/27  Functions     Read: Ch.4               Video Pointers         Read: Ch.5                Video  2, d     
 2/03 Structures    Read: Ch.6               Video Memory         Read: Ch.5.4,8.7         3  
 2/10 Unions         Read: Ch.6               Video Function ptrs Read: Ch.5.11-12      Video  4, e,f     
 2/17 Sorting         Read: Ch.5.11 Files               Read: Ch.7  5, g,h    
 2/24 Preprocessor Read: Ch.4.11 Exam   6, i 


Machine Learning Algorithms
Coding style

Machine learning algorithms

 3/17  Break         

Machine learning algorithms


 3/31 Signals Exam      
 4/07 Threads M2 reduxC
 4/14 Threads  Synchronization    
 4/21 Performance Project  D
 4/28  C++     Review      
 5/05     Final - Saturday, May 10 @ 3:30pm