--- tags: Course Documents F21 title: Syllabus --- # CSCI 0111 (Computing Foundations: Data) -- Syllabus, Fall 2021 Computer programs do not exist in a vacuum: they process information based on observations of the world. These observations--of text, numbers, images, video, or anything else--become the data over which programs operate. We are surrounded by computer programs collecting, storing, and manipulating data about us and about others. The choices programmers make about how to represent and access data have serious consequences, however, affecting the performance, usability, maintainability, and social consequences of their programs. CSCI 0111 is a data-focused introduction to computing and programming. Students will learn how to create, analyze, and test programs that manipulate and process data. Students will also discuss the social impacts of data collection, retention, and processing, and the responsibilities engineers have to society and to the people who use their software. This course is designed for both potential CS concentrators and non-concentrators. It assumes no prior programming experience and starts more gradually than other Brown CS intro courses for students without prior experience. It provides a firm foundation for future courses in computer science, and also provides non-concentrators with useful programming skills for doing data analysis in their chosen fields. Students from across campus, many of whom don't see themselves as "CS people" have enjoyed and succeeded in CSCI 0111. Course evals are dominated by comments from students surprised that they found CS approachable and accommodating to students with a wide range of interests and backgrounds. ## High-level information **Time and location:** MWF 10:00-10:50am, Metcalf Auditorium (lecture capture will be posted after class) **Instructors:** Kathi Fisler (kathryn_fisler@brown.edu) and Milda Zizyte (milda_zizyte@brown.edu) **Teaching Assistants:** Will be listed on the course website **Course website:** Will be linked before the course begins See the course website for the lecture schedule, assignments and information about how to get help. ### Learning objectives After completing this course, students will be able to: - Develop programs that process and manipulate data in the shape of tables and lists (with an introduction to tree-shaped data) - Decide how to organize data for efficient and maintainable processing by programs - Describe the social implications of large-scale data collection, retention, and usage - Decompose programming tasks into solvable subtasks, informing the structure of your programs - Develop good automatable tests for programs that give confidence in their correctness - Work with others to develop, test, and analyze programs ### Potential pathways into computer science and data science CS0111 can be taken either as a terminal course or as a lead-in to Computer Science or the Data Fluency certificate. Three paths from CS0111 are currently available: * CSCI 0111 is the first course in the three-course introductory computer science sequence: 0111, 0112, and 0200. CSCI 0112 is offered both semesters starting in fall 2021. CSCI 0200 will be a new course starting in Spring 2022 (replacing CSCI 0160 and 0180 and covering the intended content of CSCI 0113). * Students who do well in CSCI 0111 have the option of doing some extra work to prepare for CSCI 0200 (spring), which is the second half of the two CS year-long intro sequences. This extra work will start after midterms, so students have time to decide whether to pursue it. * Students interested in data science can proceed to DATA 0200 (spring); the CSCI 0111-DATA 0200 sequence leads into the Data Fluency certificate. ## Course culture Students taking CSCI 0111 come from a wide range of backgrounds (both personal and academic). We hope to foster an inclusive and safe learning environment based on curiosity rather than competition. All members of the course community--students, TAs, and the instructor--are expected to treat each other with courtesy and respect.Some of the responsibility for that lies with the staff, but a lot of it ultimately rests with you, the students. ### Be aware of your actions Sometimes, the little things add up to creating an unwelcoming culture to some students. For example, you and a friend may think you are sharing in a private joke about other races, genders, cultures, etc, but if you do this in a public space and a classmate overhears it, it can have adverse effects. There is a fair bit of research on something called “stereotype threat”, in which simply reminding someone that they belong to an particular culture or identity (on whatever dimension) can interfere with their class performance. Stereotype threat works both ways: you can assume that a student will struggle based on who they appear to be, or you can assume that a student is doing great based on who they appear to be. Both are potentially harmful. Bear in mind that diversity has many facets, some of which are not visible. Your classmates may have medical conditions (physical or mental), personal situations (financial, family, etc), or interests that aren’t common to most students in the course. Another aspect of professionalism is avoiding comments that (likely unintentionally) put down colleagues for situations they cannot control. Bragging in open space that an assignment is easy or “crazy”, for example, can send subtle cues that discourage classmates who are dealing with issues that you can’t see. Please take care, so we can create a class in which all students feel supported and respected. ### Be an adult Beyond the slips that many of us make unintentionally are a host of explicit behaviors that the course staff, department, and university (and beyond) do not tolerate. These are generally classified under the term harrassment, with sexual-based harrassment a specific form that is governed by federal laws known as Title IX. [Brown’s Title IX Web](https://www.brown.edu/about/administration/title-ix/policy) site provides many resources for understanding the terms, procedures, and policies around harrassment. Make sure you are aware enough of these issues to avoid crossing a line in your interactions with other students (for example, repeatedly asking another student out on a date after they have said no can cross this line). Your reaction to this topic might be to laugh it off, or to make (or think) snide remarks about “political correctness” or jokes about consent or other things. You might think people just need to grow a thicker skin or learn to take a joke. This isn’t your decision to make. Research shows the consequences (emotional as well as physical) on people who experience harrassment. When your behavior forces another student to focus on something other than their education, you have crossed a line. You have no right to take someone else’s education away from them. 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 and collegiality, let us at least appeal to your self-interest. Failure to take these issues seriously could land you in some real trouble. ### Issues with Course Staff 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. If you are concerned about classroom environment issues created by the staff or overall class dynamic, please feel free to talk to us about it. The instructors and the HTAs in particular welcome any comments or concerns regarding conduct of the course and the staff. Sometimes, you may not be comfortable bringing this up directly to us. If so, you are welcome to talk to Laura Dobler (the CS dept diversity coordinator), Tom Doeppner (one of the directors of Undergraduate Studies) or to the Department Chair, Ugur Cetintemel. You may also reach out to Jeana Horton in the Title IX office, a dean, or any other staff member who you trust. As a department, we will take all complaints about unprofessional or discriminatory behavior seriously. ## Logistics ### Course location, hours, staff Lecture will be in Metcalf Auditorium from 10:00-10:50am on Monday, Wednesday, and Friday. Labs will be sometime between Wednesday and Friday (schedules still TBD, but many timeslots will be available). The TAs and the instructors will hold office hours throughout each week. Specific times and locations for labs and office hours will be listed on the course website once the semester is underway. ### Time expectations In addition to 3 hours a week in lecture and 2 hours a week in lab, students will be expected to spend 8-12 hours a week outside of class on homework, projects, and drills. 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). Some students report (on course evals) finding the time commitment high, especially for an intro course. Higher time committments are common in computing courses (nationwide) because many problems ask you to write programs that actually work as judged by a computer (as opposed to classes in which you write papers and can decide when to be done). The course teaches design methods and uses a grading system that should help you manage and plan your time around your grading goals. CSCI 0111 does maintain a lighter workload than other intro CS courses that lead into the concentration. ### Required materials You do not need to purchase a textbook for the course. The [textbook](https://www.dcic-world.org/) and supporting materials will all be available free of charge online. While you will need to complete many assignments on a computer, you do not need your own computer. You will have access to several computer labs in the CIT if needed. In addition, you do **not** need a laptop for lecture (indeed, we prefer taking notes on paper). ### The classroom Our time in the classroom will be a mix of traditional lecture and discussion-based activities. We expect you to work in small groups with those around you during lecture. Please come to class ready to engage with the material and ask questions about things you don’t understand. The pre-class drills (discussed below) should help you with this! Studies have shown that the use of laptops in the classroom can be detrimental to learning--not just for the laptop user, but also for the students around them! As such, we ask that students in CSCI 0111 not use laptops or phones during class unless you want to run a program we're working on or post a question to the Q&A board. In particular, be considerate to those around you and do not use your computer for non-0111 purposes during class. For (much!) more information on the effects of laptop usage, see [here](https://cs.brown.edu/courses/cs019/2018/laptop-policy.html#(part._pop)). ### Getting help and clarification Most questions and requests for clarification should be * Asked on the Ed discussion board (default for basic information-seeking questions), * brought to office hours, or * asked in class (if it applies to many people). #### Ed Discussions Our course uses Ed for online discussions. You can use it to ask questions about course concepts, assignments, and logistics. Posts can be either public or private; public posts are visible to everyone, while private posts are visible only to course staff. Any questions having to do with your particular solution to an assignment should be private; all other posts should be public (if you have a question about something, it’s very likely that other students do, too!). The course staff reserves the right to make private posts public if the answer is of general interest. Ed is a discussion forum, so please feel free to respond to questions and comments–it’s great when students can learn from each other! When doing so, keep in mind the Course Culture guidelines. Posts made on Ed after 11pm are unlikely to get a response until the next day. **We expect you to read Ed every day or two for announcements and clarifications to assignments**; you are responsible for all clarifications made at least 48 hours before an assignment is due. If you are new to using Ed, ask the TAs during lab or office hours. #### Email In general, all course communications should run through Ed (which allows you to post anonymously, as well as privately to the staff only). Posting to Ed allows the first available staff member to get to your question without work duplication on our end. If you have a question or issue that should not be seen by the entire TA staff, send it either to the HTA mailing list (cs0111headtas@lists.brown.edu, which includes Kathi and Milda), or just to Kathi and/or Milda. Please do not email individual TAs about course matters. #### Office Hours Each TA will hold two hours of walk-in office hours per week. Kathi and Milda will hold open-to-all walk-in hours; they are also available for private appointments (send email to request one). Hours schedules are on the course website. Feel free to come to Kathi or Milda’s office hours even if you don’t have a specific question about an assignment; they is happy to chat about the course material, computer science in general, careers in computer science, etc. Please come to office hours! Coming to office hours does not send a signal that you are behind or need “extra help”; on the contrary, the most successful students are usually those who come to office hours early and often. Learning to program often involves learning different strategies for approaching problems than you've used before. Don't hesitate to ask us to help you review your strategies, even if you don't have a specific question on an assignment. If you are someone who typically resists asking for help, keep in mind that learning new strategies for approaching new areas is part of the college experience. We are happy to help guide you in this. ## Assignments, exams, and grading Homeworks and projects will be posted and handed in online. They will be due on **Tuesdays at 9pm**. You will never have a homework assignment due at the same time as a project (although homework due dates may overlap with project design checks). There will generally be either a homework assignment or a project due every week. Drills will be due at 10am on Mondays, Wednesdays, and Fridays (so if you're a late sleeper, please plan on doing them the day before!). ### Assignment types #### Drills We will assign two short online ungraded "quizzes" a week, which will be due shortly before each class session. These should take around 10-30 minutes to complete, and are designed to help us--and you!--understand which subjects you’ve internalized and which subjects we might need to spend more time on. Drills will be graded for completion only (not correctness). Full credit will be given if you complete 80% of the assigned drills (partial credit available otherwise). #### Labs You will have a two-hour lab session every week. Labs are hands-on programming projects where you'll practice writing code and integrating concepts learned in class in order to solve new problems. You'll write programs in small groups guided by our course TAs. You get full credit for lab if you work steadily on the lab for the full two hours (though you can leave if you finish early). You may miss 2 labs without penalty during the semester. #### Graded Quizzes and Final Exam There will be 2 online graded quizzes and an in-person/on-paper final exam (in the assigned slot as shown on CAB). These tests are designed to assess your *conceptual* mastery of the course material. They will have a mix of multiple-choice, short-answer, and open-response questions (but not homework-style programming problems). *[**Update:** As of 11/22, we have decided to cancel quiz 2 and instead build some additional questions into the mini project]* #### Homeworks Homeworks, due once per week, are designed to help you understand the course material and put it into practice. They will consist of both written questions and short programming assignments, which you will work on individually. Programming assignments will be graded for correctness as well as code style and test quality. Some homeworks will include short, written reflections on readings related to the impact of data on society. #### Projects There will be two larger programming-focused projects, which are designed to help you apply your programming knowledge to interesting problems and to learn how to program with a partner. For each project, your pair will design and implement a solution to a data-focused problem. Before starting to implement your solution, you will have a “design check” with a TA in order to make sure you've thought through the problem and come up with a reasonable design. For each project you'll hand in the code you wrote as well as a writeup describing your design and reflecting on the project. The course projects are independent of each other, and you'll work with a different partner for each one. You will have two weeks to complete each project: one week for the design and another week for the implementation. ### Grading and Assignment Weights Too often, students assume that the primary criterion for doing well in a programming-focused course is to write code that produces an expected answer. Writing code that runs is only one aspect of computer science. Organizing data, managing data, structuring code, documenting code, testing code, and anticipating problems from code are just as important in practice. To make this clear, grading on assignments, projects, quizzes, and exams earns points towards specific *skills*, which are separately weighted as part of course grades. Practically, this means that **producing running code is neither necessary nor sufficient to pass the course**. While you will need to be able to write code that runs to get an A, you can still pass even if you don't get all of the code running on all of the assignments. The skills are as follows: - **Data organization and management**: do you understand how to organize data for effective processing, maintanence, and representation of real-world conditons? - **Code structure and style**: is your code well organized and presented in a way that others can read it? - **Code functionality**: does your code run and produce expected results? - **Testing and Analysis**: can you assess whether a program does what it is supposed to do, both in terms of technical behavior and social consequences? Throughout the course, you will have a letter grade (high A, mid A, low A, etc) for each theme. These will get converted to letter grades as follows: - If all of your theme grades are within the same letter (whether low/mid/high), that will be your grade for the skills component - If three of your theme grades are in the same letter and the fourth is close to that letter (say three As and a mid/high B), the dominant letter will be your skills grade - In all other cases, I will determine your grade by a more detailed (manual) review. The manual review will look at issues such as: - did a skills topic grade get pulled down by one assignment that is much lower than the rest, suggesting that your understanding is a bit stronger than the topic grade would otherwise indicate - have you been showing progress in a skill topic, suggesting that your later performance is more indicative of understanding than your raw topic grade ? In computing course grades: - drills are worth 5%, - labs are worth 10% - your skills grades (homework/project/quizzes/exams) are worth 85% As for the quiz and final: - Quiz 1 counts as 10% of the functionality theme grade - The final exam will count as 15-20% of the data theme grade, and up to 10% of the testing/analysis theme grade. You will also be expected to have passed two of the graded quizzes+final (3 assessments) in order to pass the course. Basically, this just means that you can’t rely on homeworks and projects alone to pass the class. *(With the update to remove quiz 2, passing will be assessed on quiz 1, the written portion of the final project, and the final exam.)* The course is NOT graded on a curve. Everyone who earns an A gets one, independent of the performance other students. ### Assignment Policies #### Late assignments and Extensions Each student will have 10 “late days” that can be used throughout the semester on homeworks and projects. Each late day allows the student to hand in a homework up to 24 hours late. No more than three can be used on an individual assignment. Late projects count against each partner’s late days. Late days cannot be used on project design checks. Late days are meant to cover routine situations such as colds, conferences, interviews, overlapping midterms, and just needing a bit of extra time. **Extensions** beyond the late days will require more serious situations, of the sort that could be backed by a deans note (e.g., mental health challenges, hospitalization, serious illness or death in the family, etc). Students with SAS accommodations may also have arrangements that fall outside the standard late-day allocation. Extensions for will be determined on a case-by-case basis; contact Kathi or Milda directly. TAs are not allowed to grant extensions. #### Blocklists To avoid conflicts of interest in grading, TAs may not grade students with whom they have current or past close personal or professional relationships. Either students or TAs may declare grading conflicts. If there are a particular TAs who you feel should not be grading your work, please contact the HTAs, Kathi, or Milda so we can configure grading assignments accordingly. #### Regrade requests You are encouraged to look over your assignments after they have been graded. If you find a possible error or believe that you lost too many points, please submit a regrade request through Gradescope. Initiate such inquiries within one week of receiving your grade. The grading will be freshest in your TA’s mind during this time, and this prevents a backlog of requests from arising towards the end of the semester. ### Lab Attendance Weekly lab attendance is required. You are allowed to miss up to two labs during the semester without penalty (to accommodate illness, interviews, etc). Students with significant issues affecting lab attendance may contact Kathi or Milda for alternate arrangements. #### One-time Lab Switches If you discover that you cannot make your lab section during a particular week, fill out the lab-switch request form at least 24 hours in advance of your scheduled lab. That way, the HTAs will have sufficient time to read your email, help you find an open slot in another lab, and confirm the change. If you email the HTAs with less notice, say only 2 hours in advance of your scheduled lab, and no HTA is able to help you before your usual lab time, you are expected to go to your assigned lab. #### Permanent Lab Switches Contact the HTAs if you need a permanent change in your lab time. ### Accommodations (SAS and religious observance) If you feel you have physical, psychological, or learning disabilities that could affect your performance in the course, we urge you to contact [SAS](https://www.brown.edu/campus-life/support/accessibility-services/). We will do whatever we can to support accommodations recommended by SAS. Students with SAS accommodations should provide their letter to Kathi at the start of the semester. If your accommodations include something beyond extra time on assessments, email Kathi for a time to review your particular needs. Students needing accommodation for religious observance should contact Kathi a week in advance to make suitable arrangements. ## Collaboration Policy Our collaboration policy attempts to balance the benefits of students learning together and the need to work problems on your own for understanding. ### Labs Labs are done in groups of 2-4 students, depending on the activites in a particular week. There are no restrictions on collaboration within lab groups. ### Projects Projects are done in pairs. There are no restrictions on collaboration within project pairs. Project partners are expected to work on the entire project together, rather than to divide the project into parts to complete separately. Dividing the work defeats the learning goals for the project. ### Drills Drills should be done alone, as they are designed to help you and us assess whether you understand the concepts needed for the next lecture. ### Exams No collaboration is allowed on the final exam or quizzes. ### Homeworks For homeworks, you are permitted to discuss high-level ideas with other students, but you must produce your code and other responses on your own. In particular, the following activities are NOT allowed when working on homeworks: * Sharing code files with another student for any reason other than being partners on a project or lab * Sitting next to another student while writing up solutions while looking at what the other is typing * Sending code for a homework question to a classmate “just so they can look at it to figure out how to do the problem” * Obtaining a solution on-line, or from someone not in the course * Leaving your work in unprotected directories or services (including github) where other students can find them * Showing a classmate your code so they can help you find or debug an error In contrast, the following scenarios are fine: * Asking the course staff for help * Classmates discussing an assignment question at a more general level than the code: discussing what the question is asking, what topics it draws on, and other similar non-code issues * Asking a classmate what general causes of a particular error message might be, or for debugging strategies, without showing them your code We will follow Brown’s Academic Code procedures on any suspected violations. Note that those who provide solutions are held partially accountable, even if they didn’t think the other student would use their work. We understand the pressure to help friends when they ask: please don’t put other students in the position to say no to such requests. If you have questions about the boundaries of the policy, please ask. There is never a penalty for asking. ## Course Announcements Course announcements will be made via Ed. Time-sensitive or otherwise critical announcements will also go out via email. The course staff may issue clarifications to assignments up to 72 hours before the due date. You are responsible or checking for announcements every couple of days (including within 72 hours of assignment dates should there be clarifications that would affect grading).