On this page:
1 Basic Course Information
2 Course Goals and Learning Objectives
3 Keeping Current and Contacting Us
4 Class Meeting Times
5 Assignments and Exams
6 Anonymous Submissions
7 Time Allocation
8 Grades
9 Grading Personnel
10 Books and Materials
11 Accessibility /   Class Recording
12 Copyright
13 Timeliness
14 Due Dates
15 Academic Integrity
16 Unusual Assignments
17 Legal and Ethical Issues
18 In-Class Electronics Use
19 Diversity and Professionalism
20 Feedback
21 Counseling

Syllabus and Course Policies

    1 Basic Course Information

    2 Course Goals and Learning Objectives

    3 Keeping Current and Contacting Us

    4 Class Meeting Times

    5 Assignments and Exams

    6 Anonymous Submissions

    7 Time Allocation

    8 Grades

    9 Grading Personnel

    10 Books and Materials

    11 Accessibility / Class Recording

    12 Copyright

    13 Timeliness

    14 Due Dates

    15 Academic Integrity

    16 Unusual Assignments

    17 Legal and Ethical Issues

    18 In-Class Electronics Use

    19 Diversity and Professionalism

    20 Feedback

    21 Counseling

1 Basic Course Information

Please follow these links for relevant information:

Course

Instructor

2 Course Goals and Learning Objectives

This course has four learning goals:
  1. Making you strong at fundamental programming techniques.

  2. Teaching you about basic algorithms and data structures, including their analysis.

  3. Helping you understand how computing relates to society.

  4. Exposing you a little to advanced or non-traditional programming ideas.

3 Keeping Current and Contacting Us

You must subscribe to and follow the course’s EdStem board (the same one we used for summer placement).

You are welcome to post questions to the board. When you do, unless you have a particularly good reason for doing so, please make your question private to the course staff. If we feel the question is of general interest, we may choose to make it public.

Please contact us solely through EdStem unless you have a very good reason not to. You are, of course, welcome to write course staff directly if you want to discuss a private matter. However, please do not write to staff individually for help with coursework: those requests should all go through EdStem.

To make sure course staff can keep reasonable times, we will not respond to messages between 10pm and 8am. This does not mean we will start responding again promptly at 8am, just that we won’t respond overnight. This also includes days on which assignments are due! As the saying goes, “Failure to plan on your part does not constitute an emergency on our part.”

4 Class Meeting Times

The class meets at 9am, US/Eastern, on Mon-Wed-Fri.

Though you are likely to get the most out of class by attending in person, we recognize that it can sometimes be difficult to do so. Therefore, we will be recording class sessions and posting them on Panopto. Recordings will be available a few hours after class finishes.

Please note that remote access is designed primarily as a backup, not as a substitute for attending class. Your learning may be diminished, and there may sometimes be technical glitches that result in poor quality or (rarely) no recordng at all. I apologize in advance for this, but sometimes the circumstances are beyond my control.

5 Assignments and Exams

The course has several Assignments.

There are no exams.

6 Anonymous Submissions

We expect you to submit all your work anonymously. This is to eliminate biases (both positive and negative) when grading, based on attributes such as race, gender, or even how you present yourselves in person.

To make clear we are serious, we will impose a small penalty if you do include personal identifying information (unless asked to). The penalty will escalate if you keep repeating this mistake.

Turning in work without your name on it may run contrary to what you’ve been told by countless prior instructors. However, because you’re turning in work electronically, not on paper, there is no danger we will “lose track” of whose work it is.

7 Time Allocation

The work load in the course is quite uniformly distributed across the semester. Students can expect to spend about 10 hours each week on assignments. Combined with the 2.5 hours spent per week in class, this translates to approximately 180 hours over the course of the semester.

8 Grades

Your grades from the placement process do not carry over to the semester. You start with a clean slate!

On most programming assignments, you will get two or more grades: usually one will represent the correctness of your solution, while others its code quality, efficiency, thoroughness of testing, and so on. We care about all of these. If you’ve had prior computing experience, it may have left you thinking all that matters is that a program has to pass some set of test suites that the instructor has, and nothing else matters. That is exactly the wrong position to take in this course (and as a programmer in general).

Programs are not written only for computers: they are also written for humans. Humans have to review it, collaborate on its development, maintain it after you leave, etc. Your code structure, tests, and other aspects all impact this. That’s why we care about all these aspects.

You will also get grades for your written work. Here, we look for writing that is concise, concrete, and coherent. Just as with programs, we care that you write in a way that coveys your idea well to your reader.

Your overall course grade is a certificate of how you did: An A means you did Excellent work, B means you did Good work, and C means you did Fair work. I view it as a one-letter recommendation letter (a recommendation letterha, ha). I envision a person trying to hire a student with the skills that this class teaches. An A effectively says, “This person knows or can figure out how to do well most or all the tasks that might come up!” A grade of B effectively says, “This person can do several things, but may need some guidance or help.” A grade of C means, “This person has basic competence in the area”.

It should then be obvious that your performance cannot affect that of your classmates, or vice versa. I therefore do not “grade on a curve”, because I consider the notion meaningless. By the same token, there is also no “default” grade in this course. At least in principle, everyone can do well.

Your course grade will be determined by a complex process whose goal is to figure out how well you did. What does “well” mean? All your individual assignment grades will be converted to a numeric scale, and then weighted by assignment. In general, the weight is roughly proportional to the duration of the assignment, and later assignments are given much more prominence than earlier ones.

The reason these weights are not determined a priori is to allow me to deal with issues that may arise: e.g., if an assignment proves to be much more difficult than anticipated, then its weight reduces to avoid penalizing you. (This is the one way in which the performance of other students can affect you.) Your final grade assignment is also tested for “stability”: if small changes to the weights would change your letter grade, then the weights are not stable.

In general, there is some room for screwing up (because you are, after all, human, and everyone can have messy moments in a semester). Even with one disastrous assignment or two poor ones you can probably still get an A, assuming you did very well on everything else. Of course, doing poorly later in the semester or on bigger assignments will hurt you much more than doing so earlier or on shorter ones. If you do poorly roughly twice as often, that will probably get you a C. And if you exceed that, you can expect to not pass.

9 Grading Personnel

In this course, you will encounter undergraduate TAs (UTAs). UTAs are an important part of the educational mission of this department. We believe that students learn best by approaching material multiple times; we also know from personal experience that we learn best by teaching others. Therefore, UTAs undertake valuable personal learning by revisiting material some time after they first learned it, and by trying to explain it to others. In the same way, you may also encounter graduate TAs (GTAs).

These TAs also help with grading materials in the course. Their work is regularly reviewed by me. Grading is ultimately a collaboration in terms of setting standards, checking rubrics, reviewing work, etc.

However, TAs are not involved in any way in the creation of course grades. Your course grade is entirely determined by me and nobody else, and is kept confidential from all TA staff. This also means that if you have concerns about your course grade, it is not useful to discuss this with the TAs: any information you get from them may even mislead you.

10 Books and Materials

We will rely, wherever possible, on material that is available free-of-cost. We will use free software tools, and the textbook and other materials for the course are also provided for free. We will link to some third-party sites that are also available at no cost.

The primary course textbook is DCIC, and some new material that may be created as the semester progresses.

The primary course software is one or more on-line editors for the Pyret programming language.

11 Accessibility / Class Recording

Since the text for these is common across courses, to keep this document from becoming excessively long, I am linking to the Sheridan Center site. The text on those pages should be considered included here.

Please do not assume that just because I have linked to that page instead of copying it’s text that I don’t take this content seriously. I am committed to working with students with accessibility needs. If you have such needs, please get in touch with me as early as possible and we will do everything we can to accommodate them.

12 Copyright

Please be sure to note the copyright policy listed on the Sheridan Center site. The text on those pages should be considered included here.

13 Timeliness

This course has deadlines for two reasons:
  1. Many assignments in this course are accumulative: they are designed so that the learning in one assignment improves your learning in the next assignment, and so on. Therefore, turning in one late can force you to turn in the next one late, and so on, potentially leading to a difficult situation as the semester ends.

  2. As a team, the course staff need predictability in their grading schedules. There is also benefit to locality: by grading all the submissions for an assignment at the same time, (a) the staff don’t have to “page in” the assignment’s content, and (b) they can handle all the submissions uniformly and thus fairly.

For these reasons, we really prefer that you turn things in on time. However, we recognize that many things can interfere with our calendars, and we have set out accommodations for each of them. You can submit an assignment late under the following circumstances:
  • You have five late days that you can use at (almost: see below) any time during the semester. You do not have to give us any reasons; you don’t even tell us you’re using them. Just use them in the approved ways.

    However, there are a few rules and exceptions:
    1. You may not take more than two late days on any assignment.

    2. For HW0, you do not have to use any late days. We understand you may have joined the course late; since this is only a procedural assignment, you won’t be penalized for being late on it.

    3. You may not use late days on the following:

      • The first assignment of the semester. We don’t want you to start off in a habit of using up late days. You’ll want them later in the semester.

      • The Sortacle assignment. The assignment is due to be returned just before the last date for adding a course for free, for those who are still choosing between courses. We therefore need everyone to turn in solutions with enough time to complete grading.

      • Any assignments where group-work is required or optional. This is to avoid friction between group members, when some want to use a late day and others don’t.

      • The last assignment of the semester. This is so that course staff can finish grading on a reasonable date while attending to their own other needs.

    If you are taking a late day, you can submit after the deadline even if you have submitted something before the deadline. You don’t need to notify us if you do this. Just submit and we’ll automatically count your late day(s).

    Likewise, if you do submit after the deadline, no matter how close to the deadline, we will still consider it a late day. This is the only unambiguous policy that we can fairly enforce for everyone.

  • Excused absences are when you have a reason that is justifiable by a note from a Dean or Health Services. (If you are home, you can submit a letter from a local doctor.) Excused absences do not count against your late days.

    Note: When this happens, it’s usually because you are facing some adverse situation, sometimes an emergency. Follow the principle of “forgiveness, not permission”. That is, if you are in a crisis, focus on your needs. (If you have a moment to drop us a note telling us you will be delayed, that’s helpful, but in an emergency, don’t worry.) You can submit your note later. But you do need to submit official documentation for this delay to not count; otherwise it will be counted against your late days.

  • Per the university’s Religious Observance policy, if a religious event overlaps with more than half of the duration of an assignment being out, you can have as many days as you missed extra to complete the assignment. You are responsible for giving the staff a full list of the expected religious absences that require extensions before Sep 23.

14 Due Dates

These are available from Assignments.

15 Academic Integrity

Brown University has an Academic Code that governs all our transactions. This Code includes a section on Respect for the Integrity of the Academic Process, which establishes its policy on cheating. We expect that you, as students and scholars, will abide by this faithfully and fully.

You should be extremely careful when using Internet resources for assistance other than those specifically linked from the course website or specified in the assignment. You are welcome to use reference material, e.g., programming language documentation or an encyclopaedia. Be aware that performing a generic Web search may get you to much more, such as solutions. (The one exception is when an assignment explicitly tells you to search for information on the Web.) If you accidentally find a solution and choose to use it, document that you are doing so. You will lose some credit for the assignment, but at least you won’t be in violation of the Code. You shouldn’t post looking for solutions on mailing lists or Web sites, either.

Unless stated otherwise, assignments must be done alone. You are welcome to discuss any parts of the assignments with course staff. With your friends, you may talk about the assignment: e.g., how far along you are, how long you anticipate needing, etc. You may not, however, discuss solutions. If in doubt about whether you can discuss something, ask us.

You are welcome to use materials you have seen or created earlier in the semester, unless the assignment explicitly prohibits something. It’s best to add a comment on these citing their origin. But ultimately, the course is meant to build your knowledge incrementally, so you can use earlier material in later material.

Some assignments will be designated as group-work. For those assignments, you are required to work with one or two partners. The group can discuss any and all aspects of the assignment, i.e., group-members can be treated like course staff. However, this applies only to that particular assignment, not to any other assignments.

You are responsible for keeping your files private by setting the appropriate protections. If you fail and someone copies your work, you too will be held responsible. The same holds for other kinds of “sharing”, such as leaving your work visible in public places (whether computer screens or whiteboards). Another important kind of file-sharing is posting solutions on a publicly-visible version control repository site. If you host your work on such a site, make sure it’s in a private repository.

Regret Clause: Exceptions are possible only if you admit your violation to the professor (not a TA) within 24 hours of the assignment due time. This gives you an option if you cheated in desperation the night an assignment was due, or allowed someone to cheat from you, or something else—and then felt guilty about it soon after. Violations may still be sent through the normal University process even if you admit to them under this clause, under my discretion, though perhaps with mitigating recommendations so the penalty may be less harsh than if you were caught by us.

16 Unusual Assignments

Unlike most other courses you take, this one may have some unusual assignments. For instance, you may be asked to do something impossible, or you may be given a task that sounds significant but is actually trivial. In these cases, you should focus on providing a justification for your reasoning rather than a solution itself.

The purpose in having such assignments is to more accurately mimic the real world in which you will be asked to solve tasks: there are no “answers in the back”; some problems are trivial while others, which look similar, are impossible, and a priori you can’t tell which is which.

How will you know which assignments these are? You won’t. After you’ve wrestled with a problem for a while and built a hunch that this is one of them, ask the course staff to confirm your hunch. They will ask you to justify your reasoning. If you do and are on the right track, they’ll tell you that you’ve understood the real point of the problem and inform you about how to write up your (non-)solution.

17 Legal and Ethical Issues

This text is based, with thanks, on text from CSCI 1660.

Some of the material covered in this course may be usable to create attacks on computer systems or on people. It may be unethical and/or illegal to use or apply it in contexts beyond the course itself. Breaking into, misusing, or harming computer systems, networks, or people can be illegal and punishable by law. You may also run afoul of Brown’s computer use policy, which can have disciplinary consequences.

18 In-Class Electronics Use

You can use electronics in class responsibly. If you find it helps you with note-taking, or have an accessibility or other need, go ahead. However:

Over the years, students have found in-class electronics use by their classmates distracting and annoying. Therefore, you are forbidden from using anything not strictly class-related. If you want to watch videos, engage on social media, etc., you are welcome to do so—from the comfort of your room or any other place on campus. You don’t need to come to class for that, and you shouldn’t, because your screen is bound to distract those around you.

In general: you are likely much more easy to distract than you think, you are definitely less good at multi-tasking than you think, and you are much more likely to distract others than you think. Please close all windows/apps that are not strictly related to class, and use the ones that are when and in ways that are appropriate.

If your behavior spills over into distracting those around you, or distracting me, that is not acceptable. Both of these reduce the educational value to the other students in the room, and I have an obligation to them. Therefore, you can expect me to call you out in class.

19 Diversity and Professionalism

Please see the separate page on it [Diversity and Professionalism].

20 Feedback

If you have course feedback, please contact us. We want to hear from you.

However, please note: The only place we monitor is the EdStem site.

We know there are lots of popular social media out there, and many of us are even active on them. However, those are not official course communication methods; we are there in our personal capacities. It is, for instance, not acceptable to DM TAs in their TA role on those sites.

Similarly, if you have a complaint, you should not assume we will see it if you post elsewhere. In particular, we do not monitor sites like Dear Blueno. You are welcome to use such sites to vent if you’d like, but if you want something to be fixedwhether this year or for future years—that’s the wrong place to do it.

If you want to say something nice, e.g., about the course TAs, do it on Brown Bear Admirers. Some course staff do read that.

If you run into any issues that you wish to report to the course’s head course staff, you can report them using this form. We will be discreet in how we use this information. In particular, we will discuss our plans with you before we contact anyone named in the form.

21 Counseling

If you feel yourself falling behind, needing to talk to someone about personal problems, or in general want a supportive ear, the university has extensive Counseling and Psychological Services. Please don’t hesitate to use these: everyone finds them helpful at some time or the other, and they’re part of what you’re paying for to attend Brown. Make the most of them.