====== Computer Science I: ===== ===== Problem Solving and Abstraction ====== /* ~~NOTOC~~ */

CMPU-101 Section 01 -- Fall 2011

Syllabus & Course Wiki

// Our course syllabus is subject to update throughout the semester. // /*^ Course Wiki: | http://www.cs.vassar.edu/courses/cs101-20110101/top ^ | ^ Section: | 01 ^ | */ ^ Professor: | [[people:walter:top|Jenny Walter (link to my web page)]] ^ | ^ Office: | OLB 124 ^ | ^ Office Hours: | Tue 6-8pm, Wed 1:15-3 pm (and by appointment) ^ | ^ Phone: | 437 7449 ^ | ^ Email: | **walter** at **cs** dot **vassar** dot **edu** ^ | ^ Lectures: | Tue/Thu 3:10 to 4:25 pm, OLB 105 ^ | ^ Labs: | Tue 4:35 to 5:50 pm, OLB 105 ^ | ===== Textbooks/Readings: ===== This is a paper-free course, meaning all readings are available on-line and all labs, assignments, and exams are submitted, graded, and returned electronically. * {{courses:cs101-20110101:scheme-summary-2010.pdf|Scheme summary by Prof. Luke Hunsberger (click this link to download as a pdf file)}}. * Felleisen, Findler, Flatt, Krishnamurthi. //How to Design Programs, 2nd Edition// (HtDP/2e). MIT Press, 2010 Draft. Available [[http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html|online]]. * Felleisen, Findler, Flatt, Krishnamurthi. //How to Design Programs, 1st Edition// (HtDP/1e). MIT Press. Sept 2003 version. Available [[http://htdp.org/|online]]. ==== Overview ==== We will begin by studying function-based program design. The preliminary material will be covered in lecture notes by Prof. Luke Hunsberger (Vassar College). The readings in Felleisen et al., first and second editions, stress graphical programming using a library developed by the authors.\\ The course web page will be updated regularly throughout the semester with assignments, deadlines, and other important information. Please check it frequently. \\ Check your email regularly for important class announcements. ==== Course Prerequisites ==== The course is suitable for both CS majors and non-majors. //No previous programming experience is required (although knowledge about web browsers is helpful)//. ==== Attendance ==== Please notify me //before// any classes or labs you know you will miss. Part of your grade (5%) is based on participation, and you must be present to participate. Excessive absences tend to hurt one's overall performance in this class. ==== Course Goals ==== - To solve problems using the functional programming languages Racket and Swindle (a language very similar to Scheme and Racket) and a computer, of course 8-). - To learn to enjoy the creative process of programming (it really is an art). ==== Advice ==== Keep up with the reading and assignments. Topics tend to build on one another. Missing one lecture or lab may preclude fully understanding the next, so do your best to attend every class meeting. Make arrangements with a classmate to copy material you miss when you can't attend. Please contact or visit your professor if you have any questions, or if there is anything you would like to discuss. If you can't make it to office hours, let me know and I can arrange to meet with you at another time. Email is generally the best way to reach me. I will answer emails quickly (except that anything you send me after 9 pm at night will not be answered until the following morning.) My e-mail address is given at the top of this page. ==== Programming Style ==== Writing a program to solve a problem is in many ways analogous to writing an essay. In fact, both acts share the notion of composition and involve a problem-solving process. Therefore, just as you would in other classes, in this class you should strive to write elegant, non-repetitive code. One reason to strive for this goal is that over time, you will probably need to read and maintain more code than you will write from scratch. Writing unorganized, hard-to-read code will earn you a similar grade to that you would receive for writing unorganized, hard-to-read essays in an English class. I advise you not to wait until the last minute (or even the night before the assignment is due) to start a programming assignment and to try to write an algorithm or flow chart for the program before you start typing code on a machine. //Students who start working on programs early will be rewarded if their final grade is on the border between two grade categories. Your professor will often ask who has started the assignment in class. The only other way your professor has of determining who has already started an assignment is by who asks questions. Therefore, asking questions is a good thing and is highly encouraged//. Design of a program is every bit as important as the code and you will find that a good design leads to easily readable and maintainable programs. ==== Coursework ==== === Lectures === The lectures will be used to present new material, at times augmented by handouts posted on-line. Most lectures will use live programming sessions to analyze and test the concepts being presented. Program code from these sessions will typically be posted on the course web page shortly before lectures. The material covered each week will build on what was covered in prior weeks. As such, it is essential that you attend every lecture (and keep up with the reading assignments). \\ == Classroom Etiquette == We will have classes and labs in OLB 105, which has been outfitted with lab computers to accommodate our large lab enrollments. //During lecture sessions, you are encouraged to log in to your computer science account to access the course web page, links on the course web page, and to use DrRacket. The use of the computers in OLB 105 to surf the web, use FaceBook, Twitter, or any other computer applications that are unrelated to course content during lecture or lab is highly discouraged! This restriction is a matter of common courtesy because what is on your screen can distract the students sitting behind you.// === Labs === This course has weekly lab sessions held in OLB 105 (and spreading to other computer labs as necessary). These computers use the Linux operating system and have the DrRacket software that we will be using throughout the semester. Even if you have the DrRacket software installed on your own computer, you **must** do your lab work in the lab on one of the lab computers during your scheduled lab time. Each lab session should be viewed as a warm-up to prepare you for that week's assignment. When you are finished with each lab, you should ask the professor (or a lab coach) to verify that you have done the work and record your grade on a pass/fail basis. You are responsible for saving your lab work for use on exams. Since printing hard copy doesn't fit with the "green" theme of this class, you should keep all lab and assignment programs in your on-line account so that you can access them during the open-computer exams. * You are encouraged to work in pairs or groups in the labs, but each person must get their own work checked off separately. === Assignments === To reinforce the concepts we will be studying, you will construct programs of increasing complexity and sophistication throughout the course. To assess your understanding of the topics presented in this course, there will be weekly written or programming assignments.\\ * Late assignments will be penalized unless a valid excuse is presented or arrangements are made before the due date (5% of total grade will be deducted for each day the assignment is late). Extensions on assignments will not be open-ended and will be granted only in the event of illness or other excused absence. Having too much work due for other classes is not a valid excuse. * Collaboration is //not// allowed on assignments or exams. * Assignments will be submitted, graded, and returned electronically. === Exams === There will be two midterms (dates already tentatively set, see below and schedule), and a final exam (during the regularly scheduled final exam period). The exams will be given during lab in an open-notes (open-computer) format.\\ If you are unable to take the exam on the date scheduled, it is your responsibility to notify the instructor in advance to make other arrangements. === Grading === Your final grade for the course will be calculated according to the following distribution of coursework: ^ ^^^^^ ^ | 50%^ |Weekly Assignments and Labs ^ | ^ | 5%^ |Class Participation (including office visits) ^ | ^ | 25%^ |Exam I (Oct 4th) and Exam II (Nov 8th) ^ | ^ | 20%^ |Final Exam - Take home ^ | ^ ^^^^^ Note: Although higher numerical scores will necessarily receive higher grades, I do not feel bound to follow the frequently used 90/80/70/60 cut-offs. Programming is as much an art as it is a logical process and superior performance will be rewarded. No extra credit work will be assigned. Pluses or minuses may be added at my discretion. ==== Academic Integrity ==== Don't cheat. Read //Originality and Attribution: A guide for student writers at Vassar College//. Copying someone else's code without attribution amounts to plagiarism. Likewise, give proper attribution for the help you receive. School policy dictates instructors must report all suspected incidents of cheating to their department chair. Did you read the previous sentence? Please don't put yourself or your professor in that position. When in doubt, ask your professor before seeking any help from another source. ==== Students with disabilities ==== Academic accommodations are available for students with disabilities who are registered with the Office of Disability and Support Services. Students in need of disability accommodations should schedule an appointment with me early in the semester to discuss any accommodations for this course that have been approved by Office of Disability and Support Services, as indicated in your DSS accommodation letter.