CSC 115.005/006 Syllabus, Spring 2022
CSC 115, the introductory problem solving and programming course at Sonoma State University, is based on the following catalog description.
This course gives an overview of computer organization; arithmetic and logical expressions, decision and iteration, simple I/O; subprograms; principles of good programming style, readability, documentation, structured programming concepts; top-down design and refinements; techniques of debugging and testing. Use of the above concepts will be implemented in a standard high-level programming language.
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: integer and floating-point representation, string representation, arrays, structures
-
machine-level issues: data representation, pointersf
-
GNU/Linux operating system: commands, bash scripts
Course Work
This course follows a lab-based format. Thus, work related to [almost] all class sessions proceeds in three stages:
-
Read Before Class: Students are expected to read an on-line reading 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. (I will assign lab partners, with pairings changed approximately every week.)
-
Finish Lab for Homework: Although the in-class labs will help students get started on the lab exercises, students may not complete the lab during the class period. Any lab work not completed during class should plan be finished as part of homework.
In addition to an in-class, lab-based format throughout the semester, supplemental programming problems are assigned to provide additional practice and to suggest a range of applications beyond the courses robotic application theme.
Course Work will involve a combination of several activities. Submission instructions vary somewhat according to the type of the assignment.
-
Supplemental Problems extend the range of problems considered in the course and help sharpen problem-solving skills. Through the semester, five supplemental problems will be required (due on Fridays every 2-3 weeks). Supplemental problems numbered 6 or above may be done for extra credit, with these constraints:
- No more than 2 extra-credit problems may be turned in during the last week of classes (5:00 pm 5 May through 5:00 pm 12 May 2021).
- Extra credit may not raise a student's average on assignments above 120%.
Note: Supplemental Problems are to be done individually; students should not talk to others in the class, tutors, other faculty, or friends, or anyone else (except the instructor) about these problems. See, for example, The Role of Tutors For Computer Science 115.
-
Module Laboratories 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 an Apple Macintosh computing environment, highlight concepts and constructs introduced in class, allow instructor assistance in a "hands-on" setting, and supplement normal office hours. Approximately five 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 Tentative Class Schedule are required -- labs designated [Extra Credit] 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 1 week of when it is scheduled for coverage in class. As with supplemental problems, extra credit may not raise a student's average on laboratories above 120%.
Note: As a special incentive for mastering the laboratory exercises, between a third and a half of the problems on each quiz, on each test and on the exam will be taken from the laboratory exercises (with only slight editing).
Projects: Most of the eight modules concludes 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: Many lab activities and projects 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.
Due Dates: With the exception of timing near breaks or the end of the semester, labs and projects are usually due on Mondays throughout the semester.
-
Quizzes: A 20-30 minute quiz will be scheduled for the beginning of most Wednesday classes. Altogether 11 quizzes are scheduled during the semester; in grading, the lowest quiz score will be dropped. These quizzes will focus on basic topics just covered in recent past class sessions and/or the basic topics from the reading(s) for the day.
-
Hour Test: A mid-semester test is scheduled for Wednesday, March 2.
-
Exam: A final exam is scheduled on Monday, May 16 at 10:30 am, as announced by the Registrar.
-
Extra Credit Opportunities: This course provides numerous ways for earning extra credit.
-
Supplemental Problems: As noted above, Supplement Problems numbered 6 or higher may be submitted for extra credit, subject to these constraints:
- No more than 2 extra-credit problems may be turned in during the last week of classes (5:00 pm 5 May through 5:00 pm 12 May 2021)).
- Extra credit may not raise a student's average on assignments above 120%.
-
Labs: Some laboratory exercises on the schedule are designated as being available for extra credit. To earn points, turn in a lab write up within 1 week of when it is covered in class. As with Supplemental Problems, extra credit may not raise a student's average on assignments above 120%.
-
Additional extra credit opportunities may be announced through the semester.
-
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 and Sonoma State University.
Resources
Office: Darwin 116C
E-mail: henry.walker@sonoma.edu and
walker@cs.grinnell.edu
Office hours are available most weekdays via Zoom, unless announced otherwise in class.
Monday: | 8:00 pm – 9:00 pm via Zoom (URL available on CS 115.005 Home Page on Canvas) |
---|---|
Tuesday: | 11:30 am – 1:00 pm via Zoom (URL available on CS 115.005 Home Page on Canvas) |
Wednesday: | 8:00 pm – 9:00 pm via Zoom (URL available on CS 115.005 Home Page on Canvas) |
Thursday: | no office hours scheduled |
Friday: | 11:30 am – 1:00 pm via Zoom (URL available on CS 115.005 Home Page on Canvas) |
During office hours, I will try accommodate all students who want to talk with me, largely following a first-come, first-served strategy.
In addition, informal meeting times may be available just before or just after each class session.
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. As tabulated in the course link on Project Scope/Acknowledgments, materials available for this course extend beyond 130,000 lines of text. With such resources available, students may not have a need for a separate textbook.
However, some students may wish to consult additional materials on a regular basis to supplement the course's online resources. The following two books provide substantial background, but these book target different audiences. CSC 115 students may wish to obtain one of these references for use in this course. CSC 115 students need NOT obtain either of these references, and purchasing both references is likely unnecessary.
-
K. N. King, C Programming: A Modern Approach, Second Edition, W. W. Norton, 2008, ISBN 978-0393979503.
- Targeted audience: Introductory CS students who are beginning their exploration of imperative problem solving and C
- Approach: Teaching manual including many examples and much narrative
- Style: Narrative with definition of terms and extended discussion
-
Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language, Second Edition, Prentice Hall, 1988, ISBN 0-13-110362-7 (paperback), 9780133086218 (digital).
- Targeted audience: computing professionals who already know many computing concepts (but not C)
- Approach: Reference book — the standard reference for the C programming language
- Style: Terse with use of common technical terms
Additional references follow:
-
Henry Walker, An Introduction to C Through Annotated Examples, http://www.walker.cs.grinnell.edu/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.
-
Musical scale data: Frequencies of notes in a well-tempered Western scale may be specified either as separate notes or using a struct data structure.
- Code for the piano may be found in the header file scale-notes.h
-
Use of a struct data structure is described in
the reading on structs.
Code involves a pitch.h file to define the struct framework and a scale.c file that specifies the pitches.
-
Sound is available through headphones through most MathLAN workstations. However, sometimes the audio setting is muted. Instructions for sound are available, in case adjustments are needed.
-
The eSpeak package that identifies speech-synthesis capabilities for use in C programs.
A Note on Typos
Planning and development of materials for this course represent an extensive effort:
- Preparation and refinement of the course's structure and materials exceed 4100 hours.
- Course materials include about 310 Web pages involving over 130,000 lines of text (in HTML with php).
- Sample C code includes about 290 programs.
- In case you are interested, the Project Scope/Acknowledgments page for this course provides current statistics on materials for this course.
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. However, to be successful, collaboration requires partners to actively participate.
- Each partner should come to class and actively participate throughout the class session.
- Partners should make arrangements to meet as needed in the lab outside of class to finish labs or projects.
- Each partner has an obligation to show up and actively participate during out-of-class, planned sessions.
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. 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.
- You must cite statements from the online course materials, if you use them to guide your work.
- Although the World Wide Web can be useful for reference, you are advised that much material on the Web is of poor quality.
- You are responsible for the quality of what you turn in, regardless of the source of the material.
-
When you work in a group on an activity, the names of all students in the group should appear at the top of the first page. Turning in work with multiple people listed as authors implies that all members of the group agree with what is presented. If a group member does not agree with some part of the work, the group should continue to discuss and revise the material until agreement is achieved. In summary, a group activity is a joint effort, and all group members have equal responsibility for the finished product.
-
When you work on an activity yourself, but consult others, then you should include a statement identifies whom you consulted on what material. This includes conversations with class members, tutors, lab assistants, other students, faculty, and any other people involved. If you consulted one person on several parts on an assignment, you may summarize the collective help in an "Acknowledgment Section" rather on the individual problems — as long as the work makes clear who helped on what. Overall, all consultations on problems must be cited for each problem or exercise.
Collaboration is allowed on laboratory exercises and projects (i.e., all work done in class), but collaboration normally will NOT be allowed on supplemental problems and tests.
Course Policies
Sonoma State University offers alternative options to complete academic work for students who reserve 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.
Normally, laboratory write-up or project is due every Monday, and a supplemental problem is dues every 2-3 Fridays.
-
Laboratory exercises should be submitted in paper form only.
-
Projects and supplemental problems all require work should be submitted both in paper form and via email to csc161-01-grader@grinnell.edu. Both email and paper copies must be received before the stated deadline.
- The time stamp on email to csc161-01-grader@grinnell.edu will be checked for timeliness.
- Paper must be turned in under my door ahead of time or turned in at the start of the designated class.
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 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 in the middle or the end of a class. For example, paper printed at the start of class will inevitable be turned in after the start of a class, and thus will be considered late. Print your materials well before the start of class!
Exceptions to the deadline policy and its penalties:
- 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.
- Difficulties sometimes arise with printing through PaperCut. When such difficulties arise, you should contact the instructor (either at the start of class or via email). Note, however, that difficulties with PaperCut do not impact deadlines for emailing materials.
- Students arriving late to a class should turn in the paper form of the work as soon as they arrive in the classroom. In such cases, the assignment will be considered on time if (and only if) the email submission was received before the class began.
Absolute Deadline: All homework must be turned in by
Thursday, 12 May, at 5:00 pm;
laboratory reports, projects, or programs
received after that time will not be counted in the grading of the course.
SSU Policy for In-person Classes and Covid-19
"It is the responsibility of all SSU community members to adhere to Covid safety protocols. My expectation is that you carefully read all sections of the Sonoma State Covid-19 information page. Before leaving your residence or coming to campus, you are required to complete the daily wellness screening. I expect you to have completed this screening and receive a green indicator such that you are cleared to come to campus prior to coming to class. If you are unable to come to class because you have not been cleared or if you are experiencing COVID-related symptoms, I can work with you so that you can make up the missed class sessions and/or assignments. When we are in class, we are required to wear masks at all times. If you forget to bring a mask you may obtain one at Seawolf Services, the University Library, or the Student Center. Thank you so much for helping to keep the members of our class safe.”
Energencies and Illness
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.
- When circumstances are known ahead of time (e.g., academic activities, athletic events), I expect you to make arrangements with me before the activity occurs. Normally, we will identify an alternative date for the due date or test.
- When circumstances cannot be reasonably anticipated (e.g., illness, family emergencies, serious injury), I expect you to notify me as soon as is reasonably possible. (Email is fine.) In the case of medical problems that require you to miss several classes, I expect a written note from a medical professional or counselor that indicates that your health interfered with the course activity. (I do not need to know any details of the medical problem, but I do need to know that you sought help and that the medical professional believed meeting the deadline would likely interfere with your health.)
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.
DSS
If you are a student with a disability and think you may need academic accommodations, please contact Disability Services for Students (DSS) located in Schulz 1014A. Please contact DSS as early as possible in order to avoid a delay in receiving accommodation services. The use of DSS services, including testing accommodations, requires prior authorization by DSS in compliance with university policies and procedures. See SSU's policy on Disability Access for Students.
- Phone: (707) 664-2677
- Phone TTY/TDD: (707) 664-2958
- DSS Website
Counseling and Psychological Services (CAPS)
If you feel stressed or otherwise worried about your circumstances, you are encouraged to contact SSU's Counseling and Psychological Services. In summary, CAPS offers short-term individual and group counseling, workshops, crisis intervention services, consultation, referral, training, and outreach.
- Phone: (707) 664-2153
- CAPS Website
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, quizzes, and tests will be counted in the final grade.
Lab Write-ups: 15% | Supplemental Problems: 20% | Projects: 15% | Quizzes and Test: 30% | Exam: 20% |