owned this note
owned this note
Published
Linked with GitHub
---
tags: Documents, spr22
---
# CSCI0200 Syllabus, Spring 2022
Welcome to **CSCI0200**, Brown's brand new second-semester course in the CS intro sequence. This syllabus outlines the course structure, requirements, and policies. It will be the definitive source for policy questions.
[TOC]
<a id="course-info"></a>
## High-Level Course Information
**Time and Location:** MWF 11-11:50, Salomon DECI and livestreamed through Panopto (access through Canvas)
**Professors:** Kathi Fisler and Milda Zizyte
**Prerequisites:** CS111+bridge, CS112, CS15, CS17, CS19 or permission of instructor
**Description:** Students extend their program-design skills while learning multiple data structures, common graph algorithms, different forms of societal impacts from programs, how to analyze programs for performance, and how to work effectively with multiple styles of programming languages. Examples and course projects draw from several areas of computer science to help students identify their broader interests within the field.
**Time Requirements:** In addition to three hours per week in lecture, you will spend 2 hours a week in lab and 10-15 hours on homeworks and projects (the higher end is for projects; homeworks should take less time). Time expectations are the same for those in the remote/asynchronous section: you simply watch the recorded lectures (and try the in-lecture activities) on your own schedule, while still attending a lab section (perhaps virtually, but still synchronously). The schedule of assignments and deadlines is on the assignments page of the course website.
**Course Website:** The lecture schedule, notes, deadlines and all assignments will be online at [https://brown-csci0200.github.io](https://brown-csci0200.github.io/). We will only use Canvas to distribute files and videos restricted to members of the course.
**Head Teaching Assistants:**
Annie Cimack, Ashley Chung, Harshini Venkatachalam, Joe Han, Lila Zimbalist, and Udayveer Sodhi
**Teaching Assistants:**
See the staff webpage
**Socially-Responsible Computing Teaching Assistants:**
Ellie Madsen, Julia McCauley
-----
## The Course At A Glance
:::info
More details on these appear later in this document.
- Lectures MWF at 11am in DECI auditorium
- There will be lots of in-class exercises to make real-time participation worthwhile
- Lectures will be **livestreamed (via Panopto) and recorded** (files in Canvas Media Library)
- We'll be taking real-time Q&A on Ed during lectures
- If you want to take another course at the same time, request an override for section S02 (which has no fixed time)
- For the **first two weeks (lectures 2-6), we'll be split into two tracks** (one for those coming from 15 with Milda, one from those from 111/112/17/19 with Kathi). We'll alternate which group is in DECI and which is on zoom. The schedule is in Canvas.
- Everyone attends a weekly 2-hour lab section with roughly 20 students and 2 TAs.
- You'll **sign up for lab times during the first week of courses** (adjusting after shopping period if necessary)
- You can miss two labs without penalty
- An assignment (either a one-week homework or stages of a 2-week pair project) will be due every week (on Thursday evenings; this schedule will be slightly different for the first two weeks). Only one of these will be out at a time.
- You have a budget of **10 late days** to use on assignments and projects (max 3 per assignment) across the semester. These cover travel, deadline pressure, and minor illness.
- No work will be out over Spring Break
- There will be a **midterm** (online, second week of March) and a **written final (which you can take in-person or remotely during our assigned exam slot of 9am on May 20)**
- Collaboration policy allows discussion with peers on concepts, but you develop your code on your own.
:::
-----
<a id="diversity"></a>
## Diversity and Professionalism
Every student has the right to a supportive learning environment in this course. In a supportive environment, all students are treated with respect and considered able to learn, regardless of their culture, gender, beliefs, abilities, or prior CS experience. Unsupportive environments distract students from learning, often by trying to make people feel uncomfortable about who they are or whether they belong. We all share the responsibility for creating a supportive environment in this course. While some of this responsibility lies with the course staff, much of it ultimately rests with you, the students. *Nobody has the right to diminish the educational opportunity of another person who is participating in this course.*
So what are we asking of everyone?
**Don't assume that someone with a question is stupid or representative of anyone but themselves:** There are any number of reasons why someone might need more time to grasp an assignment or a concept. Maybe they first started programming last semester. Maybe they just bombed a test in another class. Maybe they are distracted by family concerns (health, finances, etc). Maybe they've had a fight with a partner. Maybe their brain just locked up. Be kind. Everyone got into Brown. Everyone deserves to be here (both at Brown and in CS0200). Look for ways to help each other learn, not knock each other down.
**Don't make assumptions about your classmates' backgrounds, situations or beliefs:** Not everyone has a fast laptop, a love of playing video games, prior programming experience, or high grades because of the culture they appear to be from. Not everyone at Brown holds progressive or liberal political opinions. An assignment that seems "so easy" to you might not have been for someome else. Try not to make generalized comments in public course spaces (like labs or Ed) that assume something about what your classmates have or have experienced. A student you aren't interacting with might overhear it and become self-conscious to the point that it adversely impacts their own work (this is a known phenomenon, called stereotype threat).
**Respect that we're living in tough times for many:** COVID, remote learning, and the ongoing tensions in the USA about race and politics are impacting many of us (including on the staff). Some of us are dealing with significant disruption, anger, angst, fear, or threats to self or livelihood. Again, be kind and focus on helping each other learn, no matter what we're each going through.
**Oh, come on ...** This said, there are students in every graduating class for whom "being kind" isn't a compelling motivation. In the thrill of new-found liberation in college, or the desire to exert your emerging adult selves, some of you will cross the line, whether through "jokes" that aren't funny or other intimidating behaviors that expect others to "show a thick skin". To you, we say:
**Be an adult and a professional:** In the adult world, many of these line-crossing behaviors have a legal name: harassment. Let there be absolutely no doubt about this: harassment is against the law and it is completely against the norms by which we want to run this course and this department. (See [Brown's Title IX Web site](http://www.brown.edu/about/administration/title-ix/policy).) We --- the university, the department, and this course's staff --- have absolutely zero tolerance for it. Workplaces are increasingly taking stronger actions against such behavior. In light of recent reports about such issues on campus, Brown is taking additional steps to reduce this form of harm. Therefore, if we cannot appeal to your decency, intelligence, and collegiality, let us at least appeal to your self-interest. Do not mess around on this matter. It will not go well for you.
However, we prefer that you think of this in positive terms. Your classmates are your colleagues. Someday you may be each others' start-up partners or co-employees; one of you may even be the other's interviewer or boss. So start treating one another like professionals, and we mean that in the best possible interpretation of that phrase.
In short: Be safe, be happy, and have fun without taking away anyone else's.
**If you are experiencing difficulties or learning disruptions**, we strongly encourage you to get in touch with someone so we can try to address the issue.
**If we slip up, let us know:** Professionalism and respect for diversity are not just matters between students; they also apply to how the course staff treat the students. The staff of this course will treat you in a way that respects our differences. However, despite our best efforts, we might slip up, hopefully inadvertently. When we do, please feel free to talk to us (Kathi, Milda or a trusted TA) about it. We promise to listen and to take your concerns seriously.
Sometimes, you may not be comfortable bringing issues up directly to us. If so, you are welcome to talk to Laura Dobler (CS diversity admin) or to Ugur Cetintemel (the department chair). You of course may also talk to the deans or the staff in the Title IX office (which has a list of campus [resources](http://www.brown.edu/about/administration/title-ix/resources)).
**Disclosure:** Please be aware that as the Associate Director for Undergraduate Studies for CS, Brown considers Kathi a Title IX responsible employee; she is thus required to share details of (suspected) incidents of sexual and gender-based harm or discrimination with Brown's Title IX office.
----
<a id="materials"></a>
## Textbook, Software, and Materials
There are no required textbooks for this course. You also don't need to purchase any software; the programs you write will all be written using publicly available and free software. Most assignments will require you to work on a laptop or computer, whether your own or ones in CS Labs (SunLab, etc). A Chromebook will not be powerful enough for some assignments.
We will be working in Java in the first part of the course and Python in the second (with those coming from CS15 working in [Pyret](www.code.pyret.org) for the first couple of weeks). Pyret runs in the browser and needs no software installed. You will need programming environments for coding in Java (version 17) and Python. The official course tools are IntelliJ for Java and VSCode for Python. The [software setup guide](https://hackmd.io/@csci0200/software-setup-s22) will help you get these installed.
If you already have different preferred tools for working in Java or Python you are welcome to use them. You will need to be able to figure out how to work with JUnit 4 (for testing Java) and pytest (for testing Python) in whatever alternate environment you might be using. The staff will only help with installation issues in IntelliJ and VSCode.
----
<a id="assignments"></a>
## Assignments Overview
**Homeworks**
Homeworks consist of programming tasks and written questions. Unless a handout explicitly says otherwise, you must write you code on your own on all homeworks, but you may discuss conceptual ideas with others (as long as you don't look at code while you do so). If you are mostly done with your code but are stuck on a bug, you may ask classmate who is also mostly done to see if they spot the error. The intent is to prevent either of you from gaining insights in how to write the code from the other, while respecting that sometimes you just need another set of eyes to find a simple typo or thinko.
**Projects**
Projects are two-week (more open-ended) homeworks which you do in pairs; they include a required intermediate design review with a TA (which both partners must attend). You may find your own partners or have us match you with someone. You may work with the same partner on only one project. There will be three projects, starting roughly one month into the course.
The staff have procedures in place for dealing with project teams that end up unable to work together effectively. Details on those will be provided on the project handouts.
**Labs**
Labs are weekly two-hour sessions in which you practice and check your understanding of course content (usually in preparation for homeworks and projects). Lab work is done with a partner. There will be roughly 20 students and two TAs per lab session. Each lab features checkpoints at which you'll need a TA to check your work so far. Once you complete the final checkpoint at the end of the lab, you are free to go. Labs are graded on participation rather than completion. It is okay if you don't finish during the lab time, but if you are routinely struggling to finish the labs, come talk to us so we can figure out why.
**Exams**
There will be two exams: a midterm (available online for multiple days during the week of March 7th) and a final (given during our assigned slot during finals week, **May 20th at 9am**). Both exams will test conceptual understanding, not programming. Exams from earlier offerings will be provided as the dates get closer. Exams will need to be done entirely on your own, with no help from others.
There will be **both a remote and an in-person option for taking the final**, though both will occur in the assigned timeslot. Those opting to take the final remotely will need to be able to upload a PDF with their answers as if they had been written on the official paper document. Remote takers will also be asked to complete an additional, video-recorded presentation of part of their work (to offset not being in the proctored environment). More details will be available later in the course.
**Practice Quizzes**
Roughly once a week, we will provide a practice quiz to help you review course materials conceptual level. **These quizzes are optional**, not graded for either correctness or completeness. However, they can help you stay on track, and give you practice with the kinds of questions that might appear on the exams. You are encouraged to work on these with other students.
---
<a id="grading"></a>
## Grading
In CSCI0200, everyone who earns an A gets one. Your grade is independent of the grade or work of any other student in the course.
Grading in CS200 is designed to help you make progress in four core skill areas: Understanding and Choosing Data Structures and Algorithms, Object-Oriented Programming and Design, Testing and Validation, and Technical and Social-Impact Analysis. Within each of these themes, we have identified [concrete learning objectives](https://hackmd.io/@cs18-spring-2021/HyCrtUQyO) that you are working towards (and that the assignments will be measuring). The rubrics for grading homeworks will frame your feedback around these four themes. We hope this will help you focus on your skills development in the course.
Initial course grades will be computed based on the following weights:
- 35% homeworks (later ones weighted more than early ones)
- 30% projects
- 10% labs (based on working actively through the lab period)
- 25% exams (combined)
For those whose initial grades end up on the boundary between two grades (A-vs-B, B-vs-C, C-vs-NC), we will resolve them by looking into your grades in the skill areas. Having some skills overall come out at the lower grade is more likely to result in your getting the lower grade.
We will also look for cases where later grades are stronger than earlier grades. This is designed to help students whose understanding improved as the course progressed.
In addition, a passing "average" across the midterm and final (combined, not separately) will be expected in order to pass the course. Basically, this means that you can't rely on homeworks and projects alone to pass the course. We will advise on what "passing" means after we see the results of the exams (but it typically comes out around the mid 50s).
We do not publish grade boundary cutoffs because grades are the boundaries depend on the overall pattern of your grades in the course. We will give guidance on how grades are progressing once we get into the course and have some data on which to base information.
#### Grading Your Code
We will grade your code partly by running it through an autograder. This will run your code against a test suite that we have developed. For this to work, your code needs to use the same method names and input/output types that are listed in the handouts. The stencil/starter code for each programming-based project will contain a file named `AutograderCompatibility`. Running your code with this file included will check whether your code is consistent with these requirements.
#### Grading Your Test Suites
After the first couple of assignments, we will grade your test suites by running them through a different autograder. In this autograder, we will use your tests to check several "solutions" (some correct and some incorrect) that we have written. Your tests should pass on our correct solutions and fail on our incorrect ones (because your tests were thorough enough to catch the problem in our incorrect solution). You'll see the terms *wheat* (correct solution) and *chaff* (incorrect solution) in some of the handouts. Your tests don't have to detect every chaff, but they should detect most of them. More details will be on the individual assignments.
----
<a id="policies"></a>
## Course Policies
### Collaboration Policy
The CS200 collaboration policy is described in a [separate document](https://hackmd.io/@csci0200/collab-spr22).
### Hours Policy
CSCI0200 offers both conceptual and debugging hours. We expect you to come to debugging hours prepared with info for your TA. We manage the lines through a Google Form. More details will appear here by the end of the first week of the course.
### Contesting an Assignment Grade
You are encouraged to look over your assignments after they have been graded. If you believe your work was erroneously marked, file a regrade request in Gradescope. We will accept regrade requests for one week after grades have been released on an assignment.
### Late Policy (including late days)
In general, our late policies are designed to give you some flexibility, while still allowing the staff to grade work in a timely manner.
**Labs**
Everyone is expected to attend lab every week. Labs are where you get to practice material or learn concepts designed to help with upcoming projects; they are also where the TAs can get a sense of how you are doing in the course. Labs are designed to take the full two hours, but if you complete the final task and have been checked off by a TA before then, you are free to leave early. You will receive full credit for the lab if you are present and making progress on the lab throughout the lab time (even if you don't finish all of the problems). Students who arrive more than 20 minutes late will not receive credit for that lab.
If you are unable to make your lab section during a particular week, fill out the lab switch form (on the webpage) **at least 24 hours in advance** to request an alternate time for that week. There is no guarantee that the HTAs will see a request filed closer to your regular lab time.
You can miss two labs during the semester without penalty (or need to make them up). You cannot make up a missed lab for credit (we don't have the capacity to check you off, and checkoff is the foundation for getting credit for your lab work).
**Homeworks and Projects**
You have an overall **budget of 10 late days** that you can use to extend homework and project due dates (not labs or exams) across the semester. At most 3 late days can be used on any single assignment (so something due on Thursday must be submitted by Sunday), unless you have a separate extension granted in email from Kathi or Milda. You do not have to ask permission to use late days; we will automatically apply them at the end of the semester.
On pair projects, late days are deducted for both partners.
### Extensions
Your late-day budget is intended to cover most situations, including travel for interviews/athletics/conferences, heavy workload periods (e.g., other midterms), short-duration religious observance, and minor illness. If you have a more serious situation as (will be) documented with a dean's note or health-services note, you may request an extension on an assignment (which would then not count against your late day budget).
Request an extension by filling out the [extension-request form](https://docs.google.com/forms/d/e/1FAIpQLSfFqvYPht8DpP7_SlnbdAXU5j67DRLhf_coOrmdQaehHkq4iw/viewform?usp=sf_link) (also linked to the course homepage). **Please use the form instead of emailing Kathi and/or Milda directly** (submitting the form will automatically generate a notification email to them). In a class this size, we are going to get a lot of email, and we don't want to lose track of your request or its granting. The form will keep all extension information in one place to prevent later confusion. *Only Kathi and Milda (not the UTAs or HTAs) will be able to see the information you submit with your request, so as to protect your privacy*. The (H)TAs are not allowed to grant extensions.
### Accommodations
If you feel you have physical, psychological, or abilities that could affect your performance in the course, we urge you to contact [SAS](https://www.brown.edu/campus-life/support/accessibility-services/) (formerly SEAS). As a general rule, we make our best effort to support all accommodations recommended by SAS.
If you have accommodations beyond extended time or reduced-distraction spaces on exams, please email Milda and Kathi to let us know what you might need. A few weeks into the course, we'll pull all the CSCI0200 accommodation letters from Brown's systems (which is why you don't need to tell us about typical time extensions).
If your accommodations indicate that you have a condition that might need you to get last-minute extensions on some assignments, you can request those by filling out the extension-request form when your situation arises. Your request will be granted, but the form will help us track that you had an extension (when it comes to grading, etc).
Unless there are special circumstances underlying your accommodations beyond these two cases, we don't need to set up a meeting about them. If you would prefer to meet or have an unusual situation, reach out to either Kathi or Milda and we will set a time to talk.
Students needing accommodation for multi-day religious observance should complete the extension-request form so we can make appropriate plans.
----
<a id="getting-help"></a>
## Where to Get Help When You Need It
We are excited to help you continue learning CS in this course! Part of your learning experience in CSCI0200, and throughout your time at Brown, will involve some amount of productive struggle with problem solving. If/when you encounter feelings of frustration, don't be afraid to ask for help. Rather than beat your head against a wall, seek out your friendly staff. Sometimes, we can identify strategies you are or could be using that are affecting your performance.
*We are here to help and we don't think less of you for asking for it!*
In particular, if you feel you are routinely getting stuck with getting started on problems, make an appointment with Kathi or Milda. We can sit down with you, review how you approach problems, and suggest strategies for you to try. Often times, the difference between assignments taking reasonable or too much time lies in your strategies, not whether you are "smart" enough for CS. People who finish faster are usually working more effectively. We want to help you learn these techniques.
That said, ***we are not on call 24/7***. Please respect that your TAs are also students with their own deadlines. Refrain from asking your TAs for help outside of TA hours or labs. Between Ed and office hours, there are plenty of chances to get help from staff who are on duty.
### Ed, Email, and Contacting Staff
**Ed**
Clarification questions and logistics questions can be asked on the [Ed Discussion board](https://edstem.org/us/courses/16807/discussion/) for the course. Unless a question pertains specifically to your attempted solution to a problem, please post questions and comments publically (you may keep them anonymous to other students). Questions about your code or that reveal key steps in a solution should be posted privately. The course staff reserve the right to make a private post public (but anonymous) if it asks a general question of interest to the entire class.
We will pin a post with (links to) answers to frequently-asked questions for each assignment while it is out. Before you post, please check the assignment FAQ post and do a quick Ed search to check whether your problem has already been addressed. Questions that have already been addressed in the FAQ may not get responses.
**Email**
A class this size has to the potential to generate a lot of email for the professors and HTAs. Please respect the following communication guidelines so that we can handle everyone's issues efficiently and effectively.
**Most questions related to the assignments, logistics, or materials should be posted to Ed** (not sent by email). Messages sent to Ed reach the entire staff, and can get handled by whoever is next on duty.
**Routine requests (lab switch, extension request, etc) should be submitted via the corresponding form on the homepage**. The forms help us track the requests and our responses so they don't get lost in our (often overflowing) inboxes. Similarly, most grading issues should start as a regrade request through Gradescope.
You should not be emailing a UTA directly unless (a) they initiated the communication, (b) they are your lab leader and you are contacting them about a lab issue, or (c\) they are your mentor and you are contacting them about a non-technical topic or mentorship.
If you have a personal concern or a non-routine issue, email the HTAs or Kathi and Milda directly. Please do not email one of Kathi or Milda and not the other unless you really want to speak to just one of us. In particular, don't send the same message separately to each of us. We can answer more messages collectively if we aren't duplicating effort.
Routine administrative issues (missing lab attendance, adding the class late, etc) should be posted privately to Ed. Private posts are visible to the entire staff. Should your question/concern warrant more privacy, email either the HTA list (cs0200headtas@lists.cs.brown.edu) or Kathi or Milda (both profs are also on the HTA mailing list) as appropriate.
If you are requesting a private meeting with Milda or Kathi, email them directly.
**Quiet Hours and Response Times**
While we check Ed every couple of hours, we aren't on all the time (especially middle of the night or early morning EST). Please understand that there will usually be a delay between when you post and when we respond. All of us have responsibilities and lives beyond CSCI0200, and Milda and Kathi encourage all staff to take their non-TA committments (including personal health!) seriously.
Kathi is rarely online after 8:30pm EST. Milda is rarely online after 9pm EST.
### Office Hours
Each TA holds at least two hours of walk-in office hours, per week. Milda and Kathi each have two scheduled hours and are available for appointments outside of hours. Each week's schedule and location is posted on the course calendar on the website.
Contrary to what you might have experienced in high school, attending office hours does not send a message to your professors or peers that you are falling behind. Au contraire, the most successful students are usually those who come to hours early and often--whenever they have questions about topics covered in lecture or would like some guidance as they work through an assignment. Kathi and Milda like getting to know students in office hours!
There are two types of hours that will be held: debugging hours and conceptual hours. Debugging hours are for individual help with your code (or yours and your partner's for pair projects). Conceptual hours are for broader questions about assignments or course content. We intend for conceptual hours to be a more collaborative space for people to work together on common issues, but not a place for debugging code. You are welcome to ask conceptual questions at code hours, but lines will often be longer.
<!--
### Gear Ups
Gear Ups are designed to review concepts presented in lecture during the previous week. TAs will work through practice problems in the current homework and answer general, conceptual questions. Questions pertaining to an individual's approach to a particular assignment are relegated to TA hours.
:::danger
**TODO:** Update this section (dear blueno no longer exists :/)
:::
### (Oh) Dear Blueno
From experience, we know that some of you will turn to sites like Dear Blueno to vent frustrations about the course. We get it. But often, the issues we hear about having been raised on Blueno are ones we would have been happy to address (or had already addressed!) if you had raised them to us directly. Much as we like (and miss) Blueno, they weren't very good at actually addressing concerns. If you just want to vent, talk to Blueno. If you want a concern to be addressed, talk to us (we might surprise you). Don't assume that we see something posted anywhere other than the official course sites.-->
---
<a id="announcements"></a>
## Receiving Announcements
Announcements, information about upcoming talks, interesting links, assignment clarifications (if necessary), and more will be made on Ed and announced at the start of lecture. Important messages will be pinned on Ed. Email will be used for time-critical or particularly important messages.
You are responsible for keeping up to date with pinned Ed posts and emailed announcements. In particular, you are responsible for any
assignment clarification that is pinned or emailed at least 72 hours before the
assignment due date.
---
<a id="ergonomics"></a>
## Ergonomics
Much of the following is from [http://cs.brown.edu/about/system/ergo.html](http://cs.brown.edu/about/system/ergo.html),
which contains links to other places with still more information.
Working at a computer may seem harmless but there are actually some
substantial risks associated with this line of work. One source of risks is being immobile (except for the hands) for long periods of time. This can lead to back and neck and wrist injury, each of which can take a very long time to correct. Worse still, the harm done can accumulate little by little over years, only showing up much later. Now is the time to start good habits.
* Make sure you are sitting properly: Is your lower back supported? Is the top third of your screen level with your eyes? Are your feet on the floor? Are your wrists as un-bent as possible?
* Take frequent breaks. Move the rest of your body and give your hands/wrists frequent rests. Never push it. Listen to your body: If it says you need a break, take it.
---
<a id="research"></a>
## Research Studies
Kathi does research in how people learn computing. She applies research results to her own courses, and sometimes publishes her findings for others.
You may be offered opportunities to participate in research studies during the course. These studies are conducted by Brown students (graduate and sometimes undergraduate) working with Kathi and Professor Shriram Krishnamurthi. Your participation (or not) and performance in these studies have no effect on your course grade. Kathi won't even know which students have participated until after the course has ended, as a way to avoid such influence.
Occasionally, a class-wide lab or in-class exercise could contribute data to a larger study. You will be informed about such cases if they arise. Individual students are never identified when we report on studies or their findings. If you have concerns about having your data contribute to these studies, please talk to Kathi.
______________________________
*Please let us know if you find any mistakes, inconsistencies, or confusing language in this or any other CSCI0200 document by filling out the [anonymous feedback form](https://docs.google.com/forms/d/e/1FAIpQLSdFzM6mpDD_1tj-vS0SMYAohPAtBZ-oZZH0-TbMKv-_Bw5HeA/viewform?usp=sf_link).*