|Course work:||Course Format||Course Components||Submitting Work||Homework||Anticipated Work Load|
|Resources:|| Instructor |
|Reference Materials||A Note on Typos||Troubleshooting Guide||Prog./Debugging Hints|
|Collaboration:||Pair Programming||Pair Responsibilities||Academic Honesty||Collaboration||Tutors|
|Course Policies:||Dates, Deadlines, and Attendance||Emergencies, Illness||Cell Phones||Accommodations||Grading|
CSC 161 is the second course in Grinnell's 3-course, introductory computer science sequence
The 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
This course follows a lab-based format. Thus, work related to [almost] all class sessions proceed in three stages:
Read Before Class: Reading assignments will incorporate both assigned readings from the textbook and online readings linked from each module. Textbook readings are assigned on most days, and those assignments can be found noted on the schedule. Online readings are linked from the module(s) for most days. Students are expected to complete assigned readings prior to each class session. Each student should prepare a list of questions or topics for class discussion, should questions arise on the reading.
Ask Questions and Work on Lab during Class: Each class will begin with questions from students, based on the reading. Following this initial discussion, the course may involve some opening comments or a short quiz on the reading. After these preliminaries, students will work collaboratively, in pairs, on a lab exercise based on the reading.
Finish Lab for Homework: Although the in-class labs will help students get started on the lab exercises, students might not be able to complete the lab during the class period. Any lab work not completed during class should plan be finished as part of homework. I will assign lab partners, with pairings changed approximately every week.
In addition to an in-class, lab-based format throughout the semester, additional homework is assigned to provide additional practice and to suggest a range of applications beyond the course's robotic application theme.
Course Work will involve a combination of several activities. Submission instructions vary somewhat according to the type of the assignment.
Homework Assignments extend the range of problems considered in the course and help sharpen problem-solving skills. Through the semester, four homework assigments will be required.
Module Labs and Projects: Topics in this course are organized into eight modules and a few supplementary labs. Modules include laboratory sessions and conclude with a integrative project.
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 four 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 [Required] on the Class Schedule are required.
Note: As a special incentive for mastering the laboratory exercises, between a third and a half of the problems on each quiz, test, and the final exam will be taken from the laboratory exercises (with only slight editing).
Projects: Most of the eight modules conclude with a project, involving both a computer program and associated commentary, and each project is a required part of the course.
Collaboration on labs and projects encouraged: All lab activities and projects should be done in groups of two or three, unless you have an anticipated, extended absence that makes it difficult to work with a group. Only one write-up is expected per group.
Quizzes: At the beginning of some class sessions (after initial questions/answer period), a short (5-10 minute) quiz may cover basic topics from the reading(s) for the day. There will be about 8 quizzes, and the lowest score will be dropped from grade calculation. Questions for the quiz will be drawn from both the textbook and online readings.
Mid-Term Exams: There will be two "mid-term" exams during the course.
Exam: An in-class final exam will be scheduled for this course. Following the exam schedule published by the Registrar's Office, times for the exam are as follows:
Tuesday Tables and Thursday Extras: Computer science is a wide-ranging discipline, and courses can cover only selected pieces. To encourage students to expand their horizons, students may earn 2 points extra credit for each Thursday Extra or other departmental talk, by attending the talk and writing a short (4-8 sentence) summary or response. Logistically, a reasonable statement must be submitted via e-mail to the instructor within 1 week of the talk; after the e-mail has been reviewed and the statement deemed appropriate, the student will receive 2 extra credit points that will apply to the laboratory category.
Labs: Some laboratory exercises may have additional tasks that may be turned in for extra credit.
Additional extra credit opportunities may be announced through the semester. Some homework assignments, for example, may have extra enhancements for more points.
As noted above, this course includes a variety of activities, including class preparation (reading), labs and projects (started in class and finished for homework), and homework problems, as well as quizzes, tests, and a final exam. From past experience, the time required for these activities will likely vary substantially from student to student and from one part of the course to another. For example, a student may need to devote considerable time and effort when starting a new or different topic, but the workload may drop noticeably when that material is mastered.
Such variation in student experiences complicates any estimation of the time individual students may need to devote to homework for this course. However, from past experience, students working steadily on the course likely should expect to allocate 10-15 hours per week to homework. Some students may require additional time for some weeks; some students may complete work in less time for some weeks. Conversations with computer science faculty and others suggest this time allocation is consistent with expectations for many courses at Grinnell College.
Barbara Z. Johnson (pronouns used: she, her, hers)
Office: Science 2811
Telephone: extension 4695
I will do my best to respond to email or telephone calls within 24 hours during the week. I will probably not be checking email over the weekend.
Office hours will be announced during the first week of class and are established based on a poll of students.
If the door is closed, please assume that I am meeting with someone. If none of these times work for you, please check my calendar for an available time and email me to set up an appointment.
K. N. King, C Programming: A Modern Approach, Second Edition, W. W. Norton, 2008, ISBN 978-0393979503.
King often covers details that are not in the online readings, especially regarding the evolution of the language. As an incentive to read the assigned readings, approximately half of the quiz questions will come from King, with minor variations. Students in prior semesters have noted that King's examples are very good illustrations of the concepts being discussed, but the writing style for the prose can be difficult.
Readings and examples for this course are under development. As noted in the day-by-day schedule, complete readings, examples, projects, and labs are available for most class sessions throughout the semester. The materials available for this course extend beyond 100,000 lines of text. There are some typos, but I am doing my best to correct them as they are located.
If you want a more compact reference book, I still carry around my copy of: Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language, Second Edition, Prentice Hall, 1988, ISBN 0-13-110362-8 (paperback), 0-13-110370-9 (hardback).
Some students have asked for additional practice in the language, and I recommend that you try HackerRank's C practice exercises. With automated feedback, you can work on syntax online and read other programmers' problem solving approaches. (Be careful ... not every proposed solution is correct!!)
Henry Walker, An Introduction to C Through Annotated Examples, http://www.cs.grinnell.edu/~walker/c/index.html
The GNU make Manual, Free Software Foundation, 2006.
Eric Huss, The C Library Reference Guide, University of Illinois Student Chapter, 1997.
The MyroC documentation that identifies MyroC operations defined for the Scribbler 2 robots in C.
Planning and development of materials for this course represent an extensive effort:
Although the developers have read, re-read, and refined the materials extensively, one can be confident that typographical errors remain.
If you find an error, if something does not read well, if deadlines on one page do not seem to match those stated on another page, etc. — don't panic (or use colorful language). Rather, please talk to the instructor (nicely please). Thanks!
Work on labs and projects in this course is often done collaboratively (in pairs, occasionally in a group of three). Many studies suggest substantial benefits to learning with this type of group work, and it is an industry practice in some software development methodologies. However, to be successful, collaboration requires partners to actively participate.
Failure to meet one's responsibilities to a group not only impacts the individual, but also impedes the education of the partner. Thus, except in exceptional circumstances (e.g., illness, family emergencies, serious injury), failure to follow through with one's responsibilities as a partner may have a significant impact on one's course grade and/or one's standing in the course. Possible ramifications of repeated absences include receiving only partial credit for a project or lab submission or a reduction in overall course grade. See Responsibilities for pair programming for details.
All work in this course is governed by the rules of the college regarding academic honesty. In summary, standard practice requires that you must acknowledge all ideas from others.
When working on homework, either individually or in a group, you may use any written source. However, the normal rules of citation must be followed, as described in the Student Handbook.
Collaboration is allowed on laboratory exercises and projects (i.e., all work done in class), but collaboration normally will NOT be allowed on homework problems, quizzes, and tests.
I do not take attendance, but since you work in pairs, I will generally know if you are missing from class. Repeated unexcused absences will impact your grade; so let me know when you plan not to come to class for any reason. This is particularly important if you plan to miss a project work day. If you have an unexcused absence on a project work day, I will deduct 5 points from your score, but your partner will not be penalized.
Grinnell College offers alternative options to complete academic work for students who observe religious holy days. Please contact me within the first three weeks of the semester if you would like to discuss a specific instance that applies to you. Since this class relies on paired programming, it is important that I know you will be absent ahead of time so that I can adjust the pair assignments!
Normally, a laboratory write-up, project, or program is due about every third class meeting. Projects, and homework problems all require work to be submitted via email to firstname.lastname@example.org or email@example.com and in paper form. (The email address should correspond to your CSC 161 section.) Both email and paper copies must be received before the stated deadline. Laboratory exercises do not need to be emailed - just hand in your paper copy in class when it is due.
It is expected that the materials submitted electronically will match the materials submitted in paper form. Discrepancies may raise questions of academic dishonesty and be subject to review by the Committee on Academic Standing.
Deadlines are shown on the Class Schedule , and work is due at the start of each class specified. A penalty of 10% per day (weekends count as one day) will be assessed for any assignment turned in late, even work submitted in the middle or the end of a class. I generally allow 5 to 10 minutes leeway for printing and getting your lab partner to sign the Academic Honesty section, but more than 15 minutes after the start of class will result in a reduction of points. Print your materials well before the start of class!
Exceptions to the deadline policy and its penalties:
Although dates for labs, programming assignments, tests, and the final exam are firm, I understand that circumstances arise when you are not able to attend class. My general excused absense policy basically says to tell me (and your programming partner) in advance of any absences.
Absolute Deadline: All homework must be turned in by the last day of classes at 5:00 pm; laboratory reports, projects, or programs received after that time will not be counted in the grading of the course.
Cell phones, text-messaging devices, and other social-networking connections may not be used in this class. If you bring such equipment to the classroom, it must be turned off before the class starts and stay off throughout the class period. Use of such equipment is distracting to those nearby and will not be tolerated.
Also, do not use your laptops or iPads to watch videos unrelated to the class material - I will ask you to put them away. You MAY use them to access course materials while working on labs and projects.
My goal is to create a learning environment that supports the learning needs of all students. If you have specific physical, psychiatric, or learning disabilities and require accommodations, please let me know early in the semester so that your learning needs may be appropriately met. You will also need to have a conversation about and provide documentation of your disability to the Coordinator for Disability Resources, John Hirschman, located on the 3rd floor of Goodnow Hall, 641-269-3089.
This instructor's grading philosophy dictates that the final grade should ultimately be based upon each student's demonstration of their understanding of the material, not on the performance of the class as a whole. 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: 15%||Homework: 20%||Projects: 20%||Quizzes: 5%||Mid-Terms : 20%||Final Exam: 20%|
Most of the time, letter grades are assigned by this schema:
|90 - 100||A|
|80 - 89||B|
|70 - 79||C|
|60 - 69||D|
|0 - 59||F|
and I add modifiers (+ and −) based on the last digit of the score, as follows:
|8 - 9||+|
|0 - 2||-|
An F is only an F, however.