Instructors: Chung-chieh Shan and Robert Rose.
Luddy Hall, Room 3018
Luddy Hall, Room 3012
Office hours for AIs and UIs can be found here.
Use Indiana University email (@indiana.edu) to reach any of the course staff; usernames are given 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: Monday and Wednesday 4:00–5:15pm in LI 033 (moved from RB 110)
Rose: Tuesday and Thursday 9:30–10:45am in BH 109
Labs Labs are held on Thursday and Friday.
There will be a midterm exam Tuesday, February 27, 7:15–9:45pm. It will be in PY (Psychology) Room 100. We will provide more information to help you to study as the date approaches.
The final exam is on Tuesday, May 1 at 10:15am–12:15pm. It will be in RH (Rawles) Room 100. We will provide more information to help you to study as the date approaches.
Felleisen, Findler, Flatt, Krishnamurthi How to Design Programs, Second Edition (Draft)
The course will primarily follow this draft of the second edition of the text book. Both editions focus on the same design principles for small pieces of software, but the details differ significantly.
Felleisen, Findler, Flatt, Krishnamurthi How to Design Programs, First Edition, MIT Press, 2001
The first edition of the text book is available in print and on line. But almost all exercise material will come from the draft book. There is no need to read this book in detail but doing so will give you a second perspective and its exercises may help improve your understanding of the material.
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. 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.
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 will be using the Top Hat classroom response system in class. You will be able to submit answers to in-class questions using Apple or Android smartphones and tablets, laptops, or through text message.
You can visit the Top Hat Overview within the Top Hat Success Center which outlines how you will register for a Top Hat account, as well as providing a brief overview to get you up and running on the system.
You can register by simply visiting our Top Hat course page and using our Course Join Code: 186439.
Top Hat usually requires a paid subscription, but we have paid for you for this course, so you don’t need to pay for a subscription if you only need Top Hat for this course.
Should you require assistance with Top Hat at any time, due to the fact that they require specific user information to troubleshoot these issues, please contact their Support Team directly by way of email (firstname.lastname@example.org), the in-app support button, or by calling 1-888-663-5491.
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.
As one way to promote student success in this course, we have a supplemental program available to you called Peer Led Team Learning (PLTL). The PLTL leaders have already taken this class, are sitting in again and will each offer an extra session to class members for each class meeting. The purpose of the session is to use active learning strategies to learn how to learn the course material, and practice, and then be able to do your homework and tests with more confidence. Particpation credit will be awarded for attending PLTL sessions. Our PLTL student leaders will provide more details in class. All students welcome. Research shows significant improvement in grades for participants so try it!
Peer-led team learning is administrated by Mr. Daniel Richert. The peer leaders for our class are Jay Chopra and Joshua Larkin. They have not yet scheduled their session times, but when they do, then they will post them to the schedule on the PLTL website. Both lecture sessions will be synchronized, so you can attend any PLTL session.
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, on the Piazza message board, and attendance and participation in PLTL sessions.
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.
Academic honesty: 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.