CS 1102 has a different style from programming courses you may have taken earlier. In many programming courses, your primary task is to learn how to program effectively in the language taught in the course. You cover other material along with the programming materials (data structures such as lists, trees, queues, etc), but your main goal is to be able to program effectively with the concepts covered in class.
In contrast, the concepts covered in CS 1102 are more abstract. In the languages portion of the course, we won't often say "here's a new data structure: write a program that uses it". Instead, we'll say "here's a new problem domain: figure out a language to simplify programming in this domain and how to create that language." This is a much more open-ended task. If you're not aware of this difference and approach the assignments like those from the more programming-oriented classes, you're likely to end up frustrated and lost.
This page gives you suggestions for how to adapt your working skills to the more open-ended style of CS 1102. If you're struggling with this adjustment, come see us and we'll help you with it. Most students struggle with this transition at some point (this is well-documented across college-age students), so please don't feel self-conscious about it (here's a short column on the stages of intellectual development in college students).
My approach to teaching is simply stated, "The students come first." That is, a teacher's obligation is to the students. not the material. Whether I cover the exact topics planned for a given day is less critical than that you learn something that day.
I believe that students learn best by engaging actively, not reading and listening passively. The most important parts of a course are the labs and homework exercises. That is where you assemble and assimilate your own knowledge. Thinking and talking about course material are almost as important, so we will often do active learning exercises in class. So do come to class; don't just sit in your room and read the book!
These expectations are less about content, and more about how you proceed through the class.
We expect you to spend roughly 12-17 hours a week on this course outside of lectures. A few students will handle the course in less time, but most of you will need a minimum of 15 hours a week to keep up with lectures and the assignments. If you're not spending this much time and not doing well, you need to spend more time practicing the course material. If you're spending much more time than this and still not doing well, come see us so we can figure out why.
We expect you to come to office hours (ours or the TA/SA's). As you work through an open-ended assignment, you'll encounter two kinds of questions: technical questions (how do I do X?) and process questions (how do I approach X?). We can answer easy technical questions on the discussion board. Deeper technical questions and process questions don't have simple answers, and we need to work on those questions in person. If you ask such a question on the discussion board, we will ask you to come in to office hours.
We expect you to treat your classmates and the course staff with respect. Respect your homework partner by responding to her/his email, showing up to meetings or canceling them in advance, and doing whatever work you agree to do for the pair. Be courteous on the discussion board (constructive criticism is encouraged, but no name calling, etc). If an assignment is unclear to you, ask us for a clarification rather than assume we're purposefully trying to make your life miserable.
Of course, if you are having a problem with your homework partner or a member of the course staff, please let us know. If your problem is with us, talk to the associate dept head, Professor Finkel.
For the first part of the course (where we learn functional programming), the syllabus page will contain links to extra exercises corresponding to each lecture. If you are having problems with the programming exercises we do in class, you need to be doing these extra problems. We will be teaching you a step-by-step approach to writing programs early in the course. If you're not able to start writing a program, you're not using the steps. We can help you with the steps if you come to office hours.
For the second part of the course (on languages), you will mostly be doing more open-ended assignments. The assignments will follow on similar examples from lecture. If you get stuck, go back to the lecture notes and study the process through which we approached the problem. Try to write down the kinds of questions that we asked that led from one stage of the solution to the next. If you don't see this process, it's very unlikely that you'll be able to do the assignment. Again, we can help you extract this process if you ask.
Students who've taken the course in the past offer consistent advice: attend lectures, start homework early (especially the project), and go to office hours.
This page maintained by Mike Gennert Department of Computer Science Worcester Polytechnic Institute |