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.
C Programming for the Absolute Beginner (For the Absolute Beginner (Series).) by Michael Vine Absolute Beginner's Guide to C (2nd Edition) by Greg Perry C For Dummies, 2nd Edition by Dan Gookin Beginning Programming for Dummies by Wallace Wang Beginning Programming (Wrox Beginning Guides) by Adrian Kingsley-Hughes, Kathie Kingsley-Hughes
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 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.
hwsubmit cspp50101 YOUR_DIRECTORY_NAME
If all goes well, you will receive a notice that the assignment has been submitted.
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 |
---|---|
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 |