====== Problem-Solving and Abstraction ====== ~~NOTOC~~ **CMPU-101 Section 02** \\ **Vassar College, Fall 2021** \\ **Syllabus / Course Wiki** \\ // Welcome to our course wiki and syllabus. It will be updated throughout the semester with important course information, so check here regularly. // ===== Contact Information ===== ^ Professor: | [[people:pfrankl:top|Phyllis Frankl]] | ^ Office: | SP 104.3 | ^ Virtual: | [[https://vassar.zoom.us/***|Zoom]] | ^ Phone: | 845 437 5992, but e-mail is a better way to reach me | ^ Email: | pfrankl@vassar.edu | ===== Course Coordinates ===== ^ Lectures: | Tue/Thu 9:00--10:15am in SP 309 | ^ Labs: | Fri 9am-11am in SP 309 | ^ Office Hours: | Tues 2:30 - 3:30, Thurs 3:30 to 4:30 and by appointment (or drop by). SP-104.3 and or zoom:\\ https://vassar.zoom.us/j/2477993620 | ^ Wiki: | https://www.cs.vassar.edu/courses/cs101-2021-02/top | ^ Campuswire: | https://campuswire.com/c/G916D3D51/feed | \\ ---- ===== Overview ===== This course introduces fundamental concepts of computer science. Its major goal is to introduce students to the principles of systematic problem-solving through programming and the basic rules of computation. We will explore the art and science of problem-solving using the computer as a tool. We will write programs in Pyret, a simple yet powerful student learning language, and Python, a popular language for work across computer science and data science. /*** Brown's syllabus says: 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. The choices programmers make about how to represent and access data affect the performance, usability, and maintainability 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. ***/ ==== Prerequisites ==== The course does not assume any prior programming experience. It is suitable for all students – majors and non-majors alike – who wish to explore the ideas of the discipline. /*** Brown's syllabus says: This course is designed for both potential CS concentrators and non-concentrators who have no programming 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. ***/ ==== Course goals ==== /*** Adapted from Brown's CSC0111 syllabus ***/ By the end of the semester, students should be able to: * Develop programs that process and manipulate data in a variety of shapes, including tables, lists, and trees; * Decide how to organize data for efficient, maintainable computational processing; * Describe the social implications of large-scale data collection, retention, and use; * Decompose programming tasks into solvable subtasks, informing the structure of your programs; * Develop good automated tests to give confidence in a program's correctness; * Work with others to develop, test, and analyze programs; and * Develop medium-sized programs with multiple interacting components. ===== Class format ===== The class sessions are intended to augment and support the material in your readings by providing an opportunity for in-depth discussion, working through examples, and the chance for you to ask questions. In class, please ask questions, and answer questions! In computer science, we seldom get anything right on the first try. We see how an attempt turned out, and we try again. I want our classroom to reflect that approach as well, so please answer a question that’s been posed, even if you’re not sure of the answer. The material covered each week builds on what was covered in prior weeks. As such, it’s essential that you attend every lecture and keep up with the reading assignments. The calendar with lecture notes, assigned readings and exercises, and exams is on the [course website][course] and will be updated throughout the semester. ===== Textbook ===== //A Data-Centric Introduction to Computing// Kathi Fisler, Shriram Krishnamurthi, Benjamin S. Lerner, and Joe Gibbs Politz Online: https://dcic-world.org ===== Computing environments ===== * [[https://code.pyret.org/|CPO]] -- Pyret * Python /**** ## Attendance We are a community of learners, but we must be present to learn from one another. You provide a unique and valuable contribution to every class. The questions you ask help everyone better understand the course material. Missing class deprives the entire class of your insights and understanding. So, please notify me before any classes or labs you know you will miss. I take attendance every class, and I worry about you when you're not present. More practically, part of your grade (5%) is based on participation, and you must be present to participate (visits during office hours also count toward class participation). Excessive absences tend to hurt one's overall performance in this class. ***/ /*** ## Advice for this Quantitative Course This course is designated as a Quantitative Course, satisfying one of Vassar's three requirements for graduation, along with the first-year Writing Seminar and the foreign language proficiency requirement. This course will challenge you to think abstractly, analytically, and logically–as would any other designated Quantitative Course. So here's some advice: Keep up with the reading and assignments. Topics tend to build on one another. Missing one lecture may prevent you from fully understanding the next, which may prevent you from completing a lab or assignment, and so on (you get the idea). Do your best to attend every lecture. Make arrangements with a classmate to copy material you miss when you can't attend, and don't hesitate to ask me questions whenever they arise. Visit me during office hours–I want to know how you feel about the course material and I truly want you to enjoy the class. ***/ ===== Coursework and grades ===== To develop and assess your understanding of the ideas presented in this course, there will be weekly labs, regular homework assignments, two midterm exams, and a final exam (during the final exam period). The elements of the course will be weighted approximately as follows: ^ Component ^ Percent of final grade ^ | Labs | 20% | | Assignments | 20% | | Exam 1 | 20% | | Exam 2 | 20% | | Exam 3 | 20% | Final grades take into account each component. You must achieve a passing grade in all components to pass this course, and to receive an A, you must have high performance in all categories. Remember that success in the course is more than just good grades. It means that you are being challenged to grow as a learner, that you are engaging actively with tasks that feed your growth, and that you are creating excellent work by completing challenging tasks with an appropriate level of support. It also means that you are building your lifelong learning skills so that once the course is over, you are better and stronger as a learner and can continue to learn new things independently. ==== Labs ==== The purpose of the labs is to give you hands-on experience with the actual tools, and to clarify concepts with examples. Labs will be evaluated for completion. Lab sessions are two hours long. Many labs can be completed in less time, and you can leave when your lab work has been checked by the instructor or a coach. However, everybody works at different speeds, and some labs may take longer than I anticipate. If you need a bit more time to finish the lab work, you should have what you’ve finished checked before the lab period ends, and you can then finish your lab work any time before the next class. You can have a coach check off your work live during coaching hours (recommended) or you can submit the files on Gradescope. Lab work won’t be accepted after the start of the next class because I’ll be sharing example solutions at that time for everyone’s benefit. ==== Assignments ==== Programming assignments will expand upon the concepts introduced in class and practiced in lab. You can expect an assignment each week (except when there's an exam). Assignments and due dates will be listed on the calendar on the course website. Programming assignments will be submitted on Gradescope and will be evaluated based on correctness and good programming style. Additional information on assignment grades will accompany the first assignment. ==== Exams ==== There are two exams during the semester as well as a final exam. The first two exams will be completed during lab times. For each exam, you may refer to an 8.5×11-inch piece of paper, double-sided, with anything written (or typed) on it that you want. Preparing this sheet of notes is an excellent way to study, encouraging you to consider what’s important that you will want to refer to. /*** ***/ Because of the inherently cumulative nature of this course, each exam will necessarily rely on content from previous exams. However, the emphasis of each exam will be on the material introduced since the previous exam. ==== Grading ==== We will be using Gradescope this term to provide feedback on your work. Homework and labs will be submitted through Gradescope, and homework and exam grades will be returned through Gradescope. As soon as grades are posted, you will be notified immediately so that you can log in and see your feedback. We’ll go over submitting on Gradescope during the first lab. ==== Late work ==== For flexibility, you have five “late days” that you can use to extend the deadline of any homework assignment by 24 hours. You may use up to two late days per homework assignment. If you plan to use a late day, please email the instructor before the original deadline. /*** ***/ If you know you won’t be able to submit an assignment, talk to me. If you’re experiencing a major problem – medical, psychological, family, etc. – that is interfering with your ability to complete your classwork, you should talk with your class advisor, the Dean of Studies, Counseling Services, or Health Services, who will recommend appropriate accommodations to all of your professors, who honestly want you to succeed. ===== Collaboration policy ===== The goal of the course is to gain an understanding of computer science, not to compete with each other. Indeed, in CS as a field, collaboration is the norm. As such, you’re encouraged to discuss class material with other CMPU101 students when reading, studying, and thinking about the problems. Unless otherwise stated, for labs you have the option to work with a classmate. If you do so, you are expected to design and implement the solutions together. You should submit a single lab with both names on it and will receive the same grade. Submitting work you have not contributed to fairly or do not understand is *academic dishonesty*. You may also consult with your classmates as you work on homework assignments, but you are not permitted to look at another student’s code or to talk about assignments in terms of code or pseudocode. In addition, you must cite any books, articles, websites, lectures, etc. that have helped you with your work. Exams must be completed individually. Do not discuss the content of the exam with anyone but the professor until the exams are graded or example solutions are released. ===== Academic integrity ===== Please read the CS department’s guide to [[https://www.cs.vassar.edu/integrity|academic integrity]]. In particular, note that: 1. You may not copy code written by anyone else (e.g., a classmate, a friend, an online source, a book). (You are permitted to use the code provided by the instructor or included in the assigned readings!) 2. Using code or other material from sources as “inspiration” and submitting highly derivative solutions is considered copying. (That is, you can’t “paraphrase” someone else’s work!) 3. You may not post a public question that contains any part of your code. 4. You may consult online resources as part of your coursework, but you may not copy code from online source. If you get an idea of how to solve a problem from an online source, include a citation near the top of your source code, e.g., # Consulted online source for list comprehensions: # https://diveintopython3.net/comprehensions.html You do not need to include a similar notation if you consulted with a classmate; we expect that – just don’t share code! If you haven’t already done so, you should read [[http://deanofthecollege.vassar.edu/documents/sources|Going to the Source]], available from the Dean of the College website. Note that the guidelines that apply to writing, in general, apply equally to the writing of computer programs. **Copying someone else’s code without attribution is plagiarism.** Give proper attribution for the help you receive. Quoting from Chapter X, “In suspected cases of plagiarism, the instructor prepares a written statement of complaint to the Academic Panel.” Please don’t put yourself or your professor in that position. When in doubt, *stop* and ask me first. ===== Communication and getting help ===== I expect all students to participate in class discussions. In return, I will make myself available to answer questions, listen to concerns, and talk to any student about topics related to the class. I welcome your feedback throughout the semester about how the course is going. Our course uses Campuswire for online discussions. You can use it to ask questions about course concepts, assignments, and logistics. We expect you to read Campuswire 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. Posts on Campuswire 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. Campuswire is a discussion forum, so please feel free to respond to questions and comments – it’s great when students can learn from each other! Because Campuswire is an extension of our classroom discussion, we expect everyone to behave accordingly: No disrespect, rudeness, or abuse will be tolerated – towards fellow students or towards the course staff. ==== Email ==== /*** ***/ Please post questions about the course to Campuswire rather than emailing the course staff -- it’s very useful to have all course questions in one place where any of us can answer them. Please don’t email individual coaches unless referring to a prior interaction with that coach. If you have concerns of a personal nature (a problem with a project partner, for instance), please email the instructor. ==== Instructor availability ==== Office hours will be listed on the [instructor's website][prof]. /*** ***/ If you need to meet at a different time, send the instructor a message. /*** ***/ 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. /*** ***/ ==== Student coaches ==== In addition to faculty office hours, student coaches will be available during scheduled labs and at other times, typically including evenings and weekends. The coaching schedule will be published online. Coaches aren’t here to give you answers, of course, but to be your fellow computer scientists thinking through a tough problem with you. Expect them to ask more questions than they answer. ===== Academic accommodations ===== Academic accommodations are available for students registered with the Office for Accessibility and Educational Opportunity (AEO). Students in need of disability (ADA/504) accommodations should schedule an appointment with me early in the semester to discuss any accommodations for this course that have been approved by the Office for Accessibility and Educational Opportunity, as indicated in your AEO accommodation letter. ===== Diversity and inclusion ===== In an ideal world, science would be objective. However, much of science is subjective and is historically built on a small subset of privileged voices. There may be both overt and covert biases in the material due to the lens with which it was written, even though the material is primarily of a scientific nature. Since integrating a diverse set of experiences is important for a more comprehensive understanding of science, please contact me if you have any suggestions to improve the quality of the course materials. I would like to create a learning environment that supports diversity of thoughts, perspectives, and experiences, and honors your identities. - If you have a name and/or set of pronouns that differ from those that appear in your official records, please let me know! - If you feel that your performance in the class is being impacted by your experiences outside of class, please don’t hesitate to contact me. If you prefer to speak with someone outside of the course, you can contact your class advisor or the Dean of Studies. - I (like many people) am still in the process of learning about diverse perspectives and identities. If something was said in class (by anyone)that made you feel uncomfortable, please talk to me about it. ===== Title IX ===== Vassar College is committed to providing a safe learning environment for all students that is free of all forms of discrimination and sexual harassment, including sexual assault, relationship abuse, and stalking. If you (or someone you know) has experienced or experiences any of these incidents, know that you are not alone. Vassar College has staff members trained to support you in navigating campus life, accessing health and counseling services, providing academic and housing accommodations, helping with legal protective orders, and more. Please be aware all Vassar faculty members are “responsible employees”, which means that if you tell me about a situation involving sexual harassment, sexual assault, relationship abuse, or stalking, I must share that information with the Title IX Coordinator. Although I have to make that notification, the Title IX office will only provide outreach by email. You will control how your case will be handled – you don’t have to read or respond to the email, and it is completely up to you whether to pursue a formal complaint. Our goal is to make sure you are aware of the range of options available to you and have access to the resources you need. If you wish to speak to someone privately, you can contact any of the following on-campus resources: * [[https://counselingservice.vassar.edu|Counseling Service]] 845-437-5700 * [[https://healthservice.vassar.edu|Health Service]] 845-437-5800 * [[https://savp.vassar.edu|SAVP (Sexual Assault and Violence Prevention)]] 845-437-7863 * SART (Sexual Assault Response Team) advocate, available 24/7 by calling the CRC at 845-437-7333 and asking for SART The SAVP website https://savp.vassar.edu and the Title IX section of the EOAA website https://eoaa.vassar.edu/title-ix have more information, as well as links to both on- and off-campus resources. ===== Acknowledgments ===== This course -- and this syllabus -- is based in large part on work by other professors, especially Kathi Fisler and colleagues at Brown University. The policy on asking and answering questions and on communication on Campuswire is adapted from Laney Strange. The statement on diversity and inclusion is adapted from Monica Linden. /*** ***/