Use Indiana University email (@iu.edu) to reach any of the course staff; addresses are given in the table above.
We have set up a course discussion forum using Piazza, which you must participate in. This is where course announcements will be made.
Shan: Tuesday and Thursday 1:00–2:15pm in IF 1106
Rose: Tuesday and Thursday 1:00–2:15pm in GY 436
Labs Labs are held on Thursday and Friday. Your attendance is required.
Office Hours Office hours are a great way to get help in person. They are listed on a separate page.
There will be a midterm exam Tuesday, February 26, 7:00–9:30pm. It will be in JH (Jordan Hall) Room A100. For disability accommodations, please contact us as soon as possible. We will provide more information to help you to study as the date approaches.
The final exam is on Thursday, May 2 at 2:45–4:45pm. To accommodate schedule conflicts and disabilities, please contact us as soon as possible. We will provide more information to help you to study as the date approaches.
Felleisen, Findler, Flatt, Krishnamurthi How to Design Programs, Second Edition
The course will primarily follow this second edition of the textbook. It is available in print and freely online. This second edition differs significantly from the first edition, even though they focus on the same design principles for small pieces of software.
The following book is not a textbook for this course, but you may find it interesting.
Bice, DeMaio, Florence, Lin, Lindeman, Nussbaum, Peterson, Plessner, Van Horn, Felleisen, Barski Realm of Racket, No Starch Press. 2013
You may think that this course teaches Scheme, or Racket, or both. It doesn’t. Instead, it teaches design ideas that are applicable in every language.
Realm of Racket is not a textbook, but instead a book that bridges the gap between the programming languages used in this course and Racket programming. The course may borrow material from Realm of Racket but there is no need for you to buy this book, in any form or shape.
Assignments will be due on Wednesday each week at midnight, except the first assignment is due on Friday. Assignments will be given a number grade, with maximum grade being 10. If you cannot complete an assignment at all for some reason, contact your instructor in advance to discuss it with them.
Each lab will feature a quiz, which will count as part of your grade.
Assignments will be submitted using the Handin Server in DrRacket. Your submission is only accepted if the message "Handin successful" appears.
Important If you make a mistake while submitting your assignment, you can resubmit as many times as you want up until the due date.
Any assignment which does not run in DrRacket (meaning that none of the check-expects run) will get at best a 6.
If you receive a grade less than 8 on an assignment, you will have the opportunity to raise your grade to an 8 by correcting all errors (including stylistic errors) and then submitting your corrected work to one of us during our office hours or other scheduled appointment. All corrections must be submitted in person during the week following the week in which your graded assignment becomes available back to you. You should be prepared to demonstrate the correct operation of your code, defend your solutions, and answer questions related to the constructs and techniques used in the programs.
Exceptions: Grades of 0 cannot be corrected. A grade above 8 cannot be promoted to a higher grade. The last assignment cannot be corrected.
For graduate students enrolled in A591, the course will be identical to C211.
We urge you to download DrRacket to your own computer so that you can work on C211 wherever, whenever you like.
DrRacket runs on most popular platforms (Windows, Mac OS X, Linux, and other *nixes). Programs written in the teaching languages have mostly the same behavior on all platforms. You therefore do not need to worry what kind of machine you use when you run your programs.
Your grade in this class will be determined primarily by your performance on weekly homeworks (40%) and your exam grades (40%). There will be two exams: a midterm and a final.
In lab each week, you will receive a grade based on an in-lab quiz and your engagement in the lab activity. Your performance in lab will determine 10% of your grade.
Additionally, 10% of your grade will be determined by participation, considered broadly. This includes participation in class and on the Piazza message board. Final letter grade in the class will be determined by your performance relative to the entire class. In other words, there will be a "curve", but it will be determined only at the end of the semester. Therefore, the total grade shown on Canvas does not reflect the letter grade you will get at the end of the semester. If you have questions about your grade, please see your instructor.
We will strictly enforce the university’s academic integrity policy. All programs must be completed strictly by you. You are free to discuss the problem sets with others, so long as you acknowledge discussants. However, you may not share code in any way. Submitting code that is not your own will be considered a violation of the University’s Code. Violations of academic integrity will be reported to Office of Student Ethics and will have a negative impact on your grade.
One of our responsibilities is to help create a safe learning environment on our campus. Title IX and our own Sexual Misconduct policy prohibit sexual misconduct. If you have experienced sexual misconduct, or know someone who has, the University can help. I encourage you to visit http://stopsexualviolence.iu.edu/ to learn more. If you are seeking help and would like to speak to someone confidentially, you can make an appointment with a Mental Health Counselor on campus (contact information available at http://stopsexualviolence.iu.edu/employee/confidential.html).
It is also important that you know that federal regulations and University policy require me to promptly convey any information about potential sexual misconduct known to me to our Deputy Title IX Coordinator or IU’s Title IX Coordinator. In that event, they will work with a small number of others on campus to ensure that appropriate measures are taken and resources are made available to the student who may have been harmed. Protecting a student’s privacy is of utmost concern, and all involved will only share information with those that need to know to ensure the University can respond and assist.