CS 410 Syllabus




General Information

Discipline Information (including Academic Honesty, Late Work, Contact Information, etc.)

Prerequisites: CS 404 is the official prerequisite, but we encourage you to have taken CS 406 as well. An AP Computer Science score of 4 or 5 will also get you into this class. However, we strongly encourge students who have taken the AP to sign up for CS404, as its approach to OO and GUIs is radically more ambitious than the APCS curriculum. There will be a quick review of UNIX at the beginning of the class to get students up to speed with command-line programming.

Course Textbook:

Course Description: This is an advanced course. It will introduce you to C, pointers, dynamic memory management, and you will learn about an array-based and link-based implementation of lists; if time allows we will build a hash table and trees as well.

Course Objectives: These are the things you will learn about.

  1. You will learn to program in the C language. This include all details on pointers, functions, structs and unions.
  2. You will learn how to manage memory on the heap using malloc and free.
  3. You will learn how to use the gdb debugger to trace code and valgrind to find and extirpate memory leaks.
  4. You will implement an array-based list in C without memory leaks.
  5. You will learn about link-based stacks, and then extend this to a full-service link-based list.
  6. You will learn how to execute a mathematical induction argument and how induction relates to recursion in computer programs.

Rough outline of the class

This class will be taught in C. You will be assumed to be a proficient coder in a couple of other languages, so this will not proceed at an introductory pace. Since we will program at the UNIX command line, a quick review of UNIX commands will be done at the beginning of this class. Then we will study the C language, roughly in this order.

The C Language Unit

  1. Basic C Program Structure
    1. The Preprocessor
    2. Preprocessor Macros
    3. Conditional Compilation
    4. The Main Routine
    5. Comment Tokens
  2. C variables and their scope
    1. global variables
    2. local variables in main
    3. Using gdb to trace code
  3. C Functions
    1. Function Prototypes
    2. Function Parameters and Local Variables
    3. C Scoping Rules
    4. The call stack
    5. C is a pass-by-value Language
    6. static storage in local variables
    7. Using Libraries
  4. Boss Statements in C
    1. Conditional Execution
    2. switch progressions
    3. The while loop
    4. The do while loop
    5. The for loop
    6. static storage in local variables
  5. C Data Structures, struct and Arrays
    1. Declaring an Array
    2. Traversing Arrays and Entry Access
    3. Heterogeneous Data Structures: the struct
  6. C Pointers
    1. Anatomy of a Program: The main code segments
    2. The Abstraction of Virtual Memory
    3. Accessing virtual memory addresses via pointers
    4. Allocation and deallocation of memory on the Stack
    5. Function Pointers
    6. Valgrind: it will hurt your feelings

Important C Libraries

After we get a basic mastery of C, we will study some key ideas in algorithmics, then we will look at the List Model.

Course Goal: You will learn to program in C at the UNIX command line and learn how to manage memory dynamically. We will study the list data model and fully implement array-based and link-based list structures. We will also lay the mathematical foundations for studying the general theory of algorithms. All mathematical writing will be done in LaTeX format.

Class Mechanics This is a general description of how things work in CS classes at NCSSM.

Grading

Grading Your grade in this class will come from several sources. You can compute your grade from returned work. Projects and the lab practical will be posted when you have your Personal Feedback Session on them.

Grading Scale:
A: 90 - 100
B: 80 - 89
C: 70 - 79
D: Below 69