Prerequisites

This course is an introductory course in computer science and computer programming. You do not need to have any computer science experience before entering this course. However, you do need to have a level of mathematical proficiency in order to enroll. Much of computer science is essentially a branch of applied mathematics, and we will use math frequently to describe the solutions to problems. It is expected that you use mathematical thinking while programming.

In order to enroll, all students must be placed into the course, following the guidelines on the placement questionnaire.

Workload

It is my expectation that this course is difficult. The reward is that you will graduate from it knowing how to program! I expect that you will have to spend 6-8 hours working outside of class/lab every week. For a two-week assignment, this means that the assignment might take 12-16 hours or more. One of the common refrains I have heard from students completing introductory programming courses is that they wish they had started assignments earlier. Don’t make this same mistake.

Grading

Participation 5%
Homeworks (3 of them) 5%
Robin project 10%
Midterm project 15%
Data visualization project 10%
Final project 25%
Exam 1 10%
Exam 2 10%
Exam 3 10%
Total 100%

Individual assingments/exams will be graded on a percentage basis. At the end of the semester, these grades will be translated into the 4-point scale roughly according to the following table (without rounding):

Percentage Grade
0-50% 0.0
50-57% 1.0
57-63% 1.3
63-69% 1.7
69-74% 2.0
74-78% 2.3
78-82% 2.7
82-86% 3.0
86-90% 3.3
90-94% 3.7
94-100% 4.0

Assignment grading

All assignments are graded both for correctness and for style.

Correctness indicates how well the assignment meets its specification – that is, does it work? If your program does not work, but there is only a small mistake in the source code, you will get significant partial credit. The moral of this policy is this: just because it doesn’t work doesn’t mean you’ve failed. Computers like to say “right” and “wrong”, but as a human, we can see the many points in between.

Style grading assesses how well you’ve conformed to the Style Guide, which dictates how you should write your code. Programming is an act of communication both between you and a computer and between you and another human. In some sense, correctness is about the former, while style is about the latter.

Your submitted work is a reflection of your progress in this course and your level of attention to detail as a student. You should always strive to submit your best work, free of messy formatting, spelling errors, and careless errors. The programs you write will often interact with the user; you should strive to make the user’s experience pleasant and your programs easy to use.

Assignments will be returned (via Gradescope) with comments. Please read these comments, and feel free to ask any questions if you need further clarification.

Homework vs. Projects

There are two kinds of assignments: homeworks and projects.

Homeworks are smaller practice exercises. While they are graded, the overall contribution to your grade is small. Homeworks will be graded by undergraduate TAs.

Projects, on the other hand, are important opportunities for you to show off what you’ve learned. I will be grading these myself. The final project is a capstone experience in this course where you choose a program to write and then write it. More details will be discussed as we approach the end of the semester, but I expect this to be a highlight of the course.

Class Participation

This component of your grade is a reflection of how you have contributed to this class. It includes speaking up in class, attendance, and engagement. I expect every student to contribute to the class environment, both to improve your own experience and to improve the experience of others. For example, you can be an active partner when working in groups, you can post on Piazza, you can raise your hand in class, and you can visit my office hours – but there are other ways to contribute, as well.

A fantastic way to contribute is to find ways to improve this material. Submit a pull request against the cs113 repo!

Exams

This course has three exams: March 6, April 10, and May 3. Note that the first exam doesn’t occur until quite late in the semester. Exams will be open-book and open-note, but you will not be able to interact with a computer. More details will be discussed as the exams approach.

If you miss an exam without emailing me first, you will get a 0 on that exam. Changes to the exam schedule will be considered only in extreme circumstances.

There is no exam during the exam period; instead, there is a final project. Details will be announced when they become available.

Late policy

Assignments are due by the beginning of class on the due date written on the assignment. You will submit assignments via Gradescope, as practiced at the end of Lab 1.

Late assignments will lose 20% of their points for every day late (or portion thereof). Each student gets 3 free late days for the semester. This means that the first three days (or portion thereof) that an assignment is late will not lead to a penalty. These late days are intended to account for unexpected bugs, minor illnesses, planned travel, etc. I will grant further extensions only in rare circumstances. You do not have to request to use a late day; they are automatically granted.

Late days may not be used on the final project.

Group work policy

Working with a partner

You are allowed to work with up to one partner on all assignments, with one caveat: no more than 2 of the projects may be completed with the same partner.

If you work with a partner:

Two partners working together receive one shared grade. You may not collaborate on one part of an assignment and then work separately on other parts.

(Exception to all of the above: the final paper component of the final project is always individual, even if other parts of the final project are completed with a partner.)

Collaboration policy

(In this section, if you are working with a partner, you and your partner are considered “you”. It is expected that partners share code!)

You are encouraged to brainstorm with others for assignments, but your submission must be your own:

All the code you submit must be written by you alone.

This means that, while it’s a great idea to discuss general algorithms or approaches with your classmates, never share code, and never submit code you found online. Violators of this policy will be asked to report themselves to the Honor Board.

If you use a website or other resource to help in your work, you must cite that resource. A comment in your code with a link is sufficient; I am not particular about citation format. It is assumed that you can use any resource posted on this website on any assignment; all other resources must be cited.

If you have a question, post on Piazza.

Piazza

There is a course question-and-answer forum at https://piazza.com/brynmawr/spring2018/cs113/home. This forum is hosted by an educational service, Piazza, and it will be the primary means of electronic communication in this course. It is free to use. Piazza offers the ability to ask questions anonymously (either anonymous to everyone or only to fellow students, but not instructors) and for one student to see others’ questions. You may also use the site to send private messages/questions to the instructors of the course.

If you have a question about the material, the course, extensions, or anything else, please use Piazza.

Piazza also has the ability to send out announcements. Any coursewide information will go through that site, which will send everyone an email with the info.

I do tend to respond to questions during business hours only; something posted Friday evening might not get a response until Monday. However, an advantage to posting on Piazza is that a fellow student or a TA might answer a question before I can.

GitHub

The course materials are hosted on GitHub. Feel free to submit corrections/ask clarifications there, via GitHub’s pull request or issues mechanisms.

Accommodations for disability

Bryn Mawr College is committed to providing equal access to students with a documented disability. Students needing academic accommodations for a disability must first register with Access Services. Students can call 610-526-7516 to make an appointment with the Coordinator of Access Services, Deb Alder, or email her at dalder@brynmawr.edu to begin this confidential process. Once registered, students should schedule an appointment with me as early in the semester as possible to share the verification form and make appropriate arrangements. Please note that accommodations are not retroactive and require advance notice to implement. More information can be obtained at the Access Services website.

Meetings

My office hours for Spring 2018 are Wednesdays 9:30-11:30am. This means that, at these hours, I am guaranteed to be in my office and expecting visitors – and I really do want visitors. During class, it’s hard to get to know all of you, and I’d love to know more about what brought you into my class, what else you’re interested in (in computer science and more broadly), and how your college experience is going generally. Come with a question, come to say hi, or come to play one of my puzzles. You can even use your curiosity about my puzzle collection as an excuse to get in the door.

If you have a conflict with my office hours, please email so we can find another time to meet.

Beyond my office hours, I aim to have an open-door policy. If you see my office door (Park 204) open, please interrupt me: that’s why the door is open!

For a broader discussion than just homework questions, I’d be happy to join you for lunch in the dining hall. Just email or ask!