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 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 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.

Syllabus

Date Topics
18 June Unix basics: logging in, bash, filesystem, PATH, edit/compile/debug cycle
Intro to C: mid-level language, program syntax
25 June More Unix: edit/compile/debug cycle, make, version control with rcs
More C: defining functions, types
02 July Control flow; Types: constructors (array, pointer); Functions: recursive and iterative
09 July Pointers vs. arrays; structs
16 July Recursively defined data structures, eg. linked lists; Memory management; casting
23 July Generic programming, header files, interfaces, Makefiles
30 July Passing methods, function pointers, array names
06 August Data structures, complexity, sorting
13 August Interactive programs, file I/O
20 August Command-line arguments, code reuse, serialization, foreign data
27 August Final Exam

Valid XHTML 1.0 Transitional Valid CSS!