Concepts of Programming - CSPP 50101


  1. Course Description
  2. Administrivia
  3. Tutorials, References
  4. Books
  5. Academic Integrity
  6. Homework
  7. Course Software
  8. Syllabus


This course is an introduction to programming -- no prior programming knowledge or experience is required. The goal is to familiarize students with the fundamental components of structured programming -- memory management, algorithms, data structures, modular design, etc. The course emphasizes fundamental concepts and elementary program design. Upon completion of the course, students should be well prepared to branch out into more modern, application-specific, and/or higher-level programming models.


Tutorials, References


Academic integrity

Students are expected to have read and understood the University's policy on Academic Integrity, as detailed in the Student Manual of University Policies and Regulations.


Many homework assignments will be from the required text, K&R. For problems which don't result in a full program, write up your experiences in a few sentences, including code snippets and error messages where appropriate. Typically, homework due Monday will include concepts or practices which will help with the programming assignment due Thursday. Homeworks are due Thursday by 11pm and Monday by 5pm.

Submit homework assignments using the unix command, hwsubmit cspp50101, available on departmental Linux computers.

  1. Read the Unix Tutorial for Beginners.
  2. Create a directory with a descriptive name (e.g., "hw1"), and put all relevant files in that directory. For programming assignments, that would include your Makefile, source code (.c) and header (.h) files, and any data files used for testing, but not object files (.o) or compiled programs. For short answer assignments, plain text files with numbered answers are appropriate. Do not submit documents in MS Word or RTF format.
  3. Change to the directory directly above that one.
  4. Type hwsubmit cspp50101 YOUR_DIRECTORY_NAME

If all goes well, you will receive a notice that the assignment has been submitted.

Course Software

We will use GCC on the departmental Linux computers. On your own machine running MS Windows you may be interested in Open Watcom, Visual C++ 2005 Express, or another free C/C++ Compiler, but your code will be evaluated on the departmental systems.


Date Topics
19 June Unix basics: logging in, bash, filesystem, edit/compile/debug cycle, make, rcs, homework submission
Intro to C: mid-level language, program syntax, basic types
26 June More Unix: PATH, version control with RCS or CVS
More C: defining functions, types, control flow, recursion, iteration
06 July Types: constructors (array, pointer, struct), casting; Memory; Functions: recursive and iterative
10 July Pointers vs. arrays; structs, recursively defined data structures, eg. linked lists
17 July Memory management
24 July Generic programming, header files, interfaces, Makefiles
31 July Passing methods, function pointers, array names
07 August data structures, complexity, sorting
14 August interactive programs, command-line arguments, file i/o, exceptions
21 August File I/O, serialization, foreign data, code
28 August code reuse, parsing, invariants, global and static variables
07 September programming languages, software development phases, unanswered questions
11 September Final Exam

Valid XHTML 1.0 Transitional Valid CSS!