Concepts of Programming - CSPP 50101

Contents

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

Description

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.

Administrivia

Tutorials, References

Books

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.

Homework

Many homework assignments will be from the primary 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 Friday. Homeworks are due Friday by 11:59pm and Monday by 5:29pm.

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

  1. Read the Unix Tutorial for Beginners.
  2. Create a directory with a descriptive name (e.g., "hw1"), and create 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 (eg. a.out). 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. (cd ..)
  4. Type hwsubmit cspp50101 YOUR_DIRECTORY_NAME, and you should see a response in the terminal indicating that the directory has been sent to the grader.

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.

Syllabus

Date Topics
30 June Unix basics: logging in, bash, filesystem, edit/compile/debug cycle
Intro to C: program syntax, basic types
07 July More Unix: make, version control with rcs
More C: types, operators, expressions, control flow
14 July Types: constructors (array, pointer); Functions: recursive and iterative
21 July Pointers vs. arrays; structs; data structures
28 July Recursively defined data structures, eg. linked lists; Memory management; casting
04 August Generic programming, header files, interfaces, Makefiles
11 August Passing methods, function pointers, array names
18 August Data structures, complexity, sorting
25 August Control Flow, Command-line Arguments, Variables, Arrays, File I/O, Signals
01 September Labor Day
08 September Serialization, Code Reuse, Invariants, Parsing, Foreign Data
15 September Final Exam

Valid XHTML 1.0 Transitional Valid CSS!