|Imperative Problem Solving and Data Structures
|Schedule ( .dvi format / pdf format / postscript )
This course explores elements of computing that have reasonably close ties to the architecture of computers, compilers, and operating systems. The course takes an imperative view of problem-solving, supported by programming in the C programming language. Some topics include:
imperative problem solving: top-down design, common algorithms, assertions, invariants
C programming: syntax and semantics, control structures, functions, parameters, macro processing, compiling, linking, program organization
concepts with data: data abstraction, integer and floating-point representation, string representation, arrays, unions, structures, linked list data structures, stacks, and queues
machine-level issues: data representation, pointers, memory management
GNU/Linux operating system: commands, bash scripts, software development tools
Henry M. Walker
Office: Science 3811
Telephone: extension 4208
Office hours are posted weekly on the bulletin board outside Science 3811, with additional hours possible by appointment. You may reserve a half hour meeting by signing up on the weekly schedule, but please sign up at least a day in advance.
Henry Walker, An Introduction to C Through Annotated Examples, http://www.walker.cs.grinnell.edu/c/index.html
K. N. King, C Programming: A Modern Approach, Second Edition, W. W. Norton, 2008, ISBN 978-0393979503.
The GNU make Manual, Free Software Foundation, 2006.
Eric Huss, The C Library Reference Guide, University of Illinois Student Chapter, 1997.
During the class, we talked about four implementations of stacks, as given in the following code.
While the schedule for this course is expected to evolve, a Tentative Class Schedule is available in .dvi , pdf, and postscript formats.
Also, if you are logged into the departmental network and want a copy printed, click duerer to have a copy printed on the printer duerer.
Course Work will involve a combination of the following activities.
Supplemental Problems extend the range of problems considered in the course and help sharpen problem-solving skills. Through the semester, seven supplemental problems will be required. Supplemental problems numbered 8 or above may be done for extra credit, although extra credit may not raise a student's average on assignments above 120%.
Laboratories: Laboratory sessions introduce specific features of Grinnell's computing environment, highlight concepts and constructs introduced in class, allow instructor assistance in a "hands-on" setting, and supplement normal office hours.
Approximately ten labs require a formal write-up, explaining what work you have done, showing any programming you have done, indicating tests or experiments run, and giving your conclusions. Labs designated [Req] on the Tentative Class Schedule are required -- labs designated [EC] may be done for extra credit. In order for extra-credit labs to provide reasonable benefit, any such lab being submitted for credit must be turned in within 2 weeks of when it is scheduled for coverage in class. As with written homework, extra credit may not raise a student's average on laboratories above 120%.
Many lab activities should be done in groups of two or three, although you may work individually on labs after Lab 8. Only one write-up is expected per group.
Hour Tests: Three hour tests are tentatively scheduled for Friday, 19 February, Wednesday, 10 March, and Friday, 30 April.
Exam: Following the College's published schedule, the final examination for this class is scheduled for Wednesday, 19 May 2010 at 2:00 pm.
Deadlines are shown on the Tentative Class Schedule , and work is due at the start of each class specified. A penalty of 25% per class meeting will be assessed for any assignment turned in late, even work submitted at the end of a class. However, an extension of at least one class period is automatically granted if the department's Linux network is down for an unscheduled period of three or more hours during the week preceding the assignment. Normally, a program or laboratory write-up is due every third class meeting.
Absolute Deadline: All homework must be turned in by Friday,
14 May at 5:00 pm;
laboratory reports or programs received after that time will not be counted in the grading of the course.
Collaboration often will be allowed on laboratory exercises and problems from the textbook, but collaboration normally will NOT be allowed on supplemental problems and tests. To avoid confusion, the rules for collaboration on homework are included in the specification of each assignment.
This instructor's grading philosophy dictates that the final grade should ultimately be based upon each student's demonstration of her or his understanding of the material, not on the performance of the class as a whole nor on a strict percentile basis. The following scheme is proposed as a base for how the various assignments and tests will be counted in the final grade.
|Lab Write-ups: 25%
|Supplemental Problems: 25%
|Hour Tests: 30%
This document is available on the World Wide Web as
created 25 April 2008
last revised 7 April 2010
|For more information, please contact Henry M. Walker at firstname.lastname@example.org.