CS 241: Data Organization using C

Instructor:

Dr. Marie Vasek
Contact: Private message me on the course Piazza page
Office Hours: Thursday 2-4 and Friday 10-noon (and by appointment)
Office: Farris 2120

Lab Instructors/Graders:

Steven Chavez
Contact: Private message me on the course Piazza page
Office Hour: Wednesday 11-noon
Office Hours location: Farris 2065

Andrew Morin
Contact: Private message me on the course Piazza page
Office Hour: TBA
Office Hours location: Farris 2085

Cyrus Stephens (grader)
Contact: Private message me on the course Piazza page
Office Hour: Monday 2-3pm
Office Hours location: Farris 2000

Lectures

12:30pm - 1:45pm TR Dane Smith Hall 225

Labs

Lab 004

Time: 2pm - 3:15pm Tuesday
Location: Science Math Learning Center B81 Farris 3100
Lab Instructor: TBA

Lab 005

Time: 2pm - 3:15pm Thursday
Location: Science Math Learning Center B81 Dane Smith Hall 144
Lab Intructor: Steven

Lab 006

Time: 9:30am - 10:45am Thursday
Location: Dane Smith Hall 143 144
Lab Instructor: Andrew

Course Description

CS-241 is an introduction to the C Programming language, an introduction to using a command-line interface in the Linux operating system, and an introduction to machine level data organization and memory allocation. Students taking this course should already be familiar with basic concepts of computer programming such as variables, conditional control flow and loops. Developing mastery of these fundamental concepts is one of the goals of CS-241. Students in CS-241 author many C programs. Some lab assignments will be short and relatively simple. Others will be more interesting and touch on a wide range of computer applications including encryption, numerical analysis, databases, artificial intelligence, genetic algorithms and games.

Many examples used in this course involve standard data structures such as linked lists and trees. However, mastery of such data structures is not within the course's domain. The primary goals of CS 241 are for the student to be able to:

  1. Read and apply the C syntax covered in the textbook (The C Programming Language by Kernighan and Ritchie).

  2. Without a computer, determine the output of C language source code involving triply nested loops, conditional control flow, function calls, pointers, arrays, arithmetic, logical and bit operators, structures and memory allocation.

  3. Use a Linux command-line environment to manipulate files, and directories, and to edit, compile, run and debug C programs. This includes the use of simple makefiles and a low level debugger such as valgrind.

  4. Implement, in C, any given algorithm with a complexity level equivalent to that of quicksort or a doubly linked list with accuracy, efficiently and clarity.

Syllabus

Schedule

Quiz Review

References