Computer Science 101
Problem Solving and Structured Programming in C

Syllabus


Home
Syllabus
Calendar

Assignments
Other Handouts

Programming Resources

Administrivia

Instructor: Bart Niswonger, 404C Clapp, bniswong@mtholyoke.edu
Lecture: Monday & Wednesday, 8:35-9:50am in Kendade 305
Lab: Monday, Tuesday, Wednesday, 1-2:50pm in Reese 316 (each student should have signed up for one time)
Office Hours: Monday, Tuesday, and Wednesday, 12-1 or whenever the door is open. I am only on campus those three days.
Text Book: Jeri R. Hanly and Elliot B. Koffman, Problem Solving and Program Design in C, 3rd Edition, Addison-Wesley, 1999. Strongly Recommended

Assumptions

My first assumption is that none of you have extensive programming experience. Some, I expect, may have a little experience, others may have never touched a computer.

My second assumption is that you will all be willing (eager, even) to participate in class, to ask questions when you do not understand, and to provide me with feedback as to what works in my teaching and what does not. I want very much for this class to be highly interactive!

Goals

By the end of the semester, I want each of you to have the following:

  • An intuitive understanding of how computers execute programs: how the primary pieces (CPU, disk, memory) work together to process the instructions listed in your programs.
  • A strong feeling for the process whereby a program written in a high level language (such as C) is transformed into a set of instructions for the computer.
  • Strong familiarity with the basic programming constructs such as loops and conditionals.
  • The ability to solve moderately complex problems by designing and writing a program.
  • A sense for abstraction and functional decomposition, as they are used within the computer science community.
  • An understanding of algorithm and the ability to develop solutions to moderately complex problems by describing an algorithm.
In addition, I have goals for myself:
  • To develop a sense of community within the classroom.
  • To have improved my ability to present the material by soliciting and listening to feedback from the students.
  • To have explored the use of class room activities as a way to help students absorb concepts, and to keep students engaged.
  • To have made use of short class room assessment techniques as a way to keep abreast of student understanding and sentiment.

Lecture Expectations

Lectures will be made up of my presenting material followed by small group exercises. The exercises will be designed to help you explore and understand the concepts more completely. I expect that both during my presentations and your exercises you will ask for clarification whenever you need it. At the end of class I will typically have a small questionnaire for all of you to fill out and return before you leave. These will help me understand how the class as a whole is progressing. They will be anonymous.

Some of the activities will involve presenting to the class or acting out roles. I expect all students to attend lecture and take part in these activities, and will do my best to keep them amusing! I will not, however, be taking attendance.

I would love to hear any kind of feedback you have about them or any other aspect of the class, positive, negative or otherwise.

Assignments

Guidelines

Assignments in this course are meant to be done by a single student and will be used to gauge how well a single student grasps the material. They are also designed to help each of you learn the material. You will not learn to program without doing the assignments. The assignments are cumulative: if you skip one the next one will be much harder.

That said, I feel that collaboration is a very effective and useful way to learn. Therefore I want to encourage some kinds of collaboration while prohibiting other kinds. It is hard to determine where the line is, so here is a technique which I have seen work before, the so called "Gilligan's Island" technique:

    You are free to discuss the assignment and how it might be solved as long as
  1. You do not do so in front of a computer (you may use a white board or a piece of paper)
  2. When you are done discussing, but before you have started to work on your solution, you must destroy any notes you have taken
  3. After you have destroyed your notes, but before you start to work on your solution you must spend 30 minutes doing something mindless like watching "Gilligan's Island" or "Friends" or some other distracting activity.
  4. If, after this, you can sit down and construct your solution, then I feel you learned something from your collaboration. If you cannot, then you have not learned the material. Giving in to the temptation to dig those notes out from the trash is considered cheating. Remember that Mount Holyoke has an Honor Code and that you are bound to it.

Lab

The lab assignments will be small projects that are meant to illustrate the concepts discussed in class. They will be designed to be completed within a single lab session, but if you do not finish you may work on it over the week until the next lab. They will be graded in lab on a simple scale reflecting whether or not they work. You must demonstrate the project to some member of the lab staff (and have them sign off) in order to receive credit.

Homework

Homework will, for the most part, be continuations or elaborations on the lab projects. It will typically be due the following lab period, although later projects may involve several weeks. Each student will demonstrate and discuss their homework with me during the lab in which they are due. As a result, late homeworks will not be tolerated. There will be a penalty of a letter grade a day, as well as the requirement that you must find time to demonstrate the assignment to me. This is made more challenging because I am only available Monday, Tuesday and Wednesday.

The previous paragraph is rather severe. If you are having trouble or foresee some complication which is going to cause a problem turning in work, let me know. I am sure we can work out some arrangement which is mutually agreeable.

Reading

The book is meant as a resource from which you can get a different presentation of the material covered in this course. I will indicate which sections of the book are most relevant to each lecture. I will not require you to have read those sections before class, although many of you may find this useful. Others may find it useful to read after class. I do expect you to ask questions in class and you may find reading beforehand helps you come up with questions.

Grades

Grades will be based on participation in class (20%), completion of lab projects (30%) and homework grades (40-50%). There may be a few (at most 3) quizzes which would count for no more than 10% of the total grade. There will be no tests and no final exam.

Happy Computing!!