CS111 is an introduction to the problem solving foundations of computer science. In this course, you will learn big ideas about solving problems, developing algorithms, and organizing programs.
These ideas include:
- Abstraction: capturing common patterns, hiding information, making specifications (contracts);
- Modularity: expressing programs as the composition of mix-and-match parts;
- Problem solving strategies: divide-conquer-glue, recursion, iteration;
- Models: ways to understand how programs are executed;
You will get hands-on experience with these ideas by reading, modifying, debugging, designing, writing, and testing Python programs. Example programs will involve various text manipulation, Python graphics, and animations.
CS111 students must register for and attend a weekly laboratory. Problem solving and programming are skills best learned by doing.
CS111 is required for students who wish to major or minor in computer science or elect more advanced courses in the field. Consult Choosing an Introductory CS Course for more information.
Prerequisite: None. No prior computer science background is expected.
Distribution: Mathematical Modeling. Does not satisfy laboratory requirement. Unit: 1.0
The aim of this course is to enable students to solve various sorts of problems by writing programs that emphasize the four big ideas listed above (namely, abstraction, modularity, strategies and models). This course happens to use the Python programming language to explore these ideas. Although students will learn a lot about Python along the way, our focus is on the big ideas. Students will really be learning and practicing techniques for solving problems — techniques that apply to any programming language, and, indeed, to any discipline. Example programs may involve text manipulation, data analysis and visualization, Python graphics, and animations.
Students who complete this course should be able to:
- Read, modify, debug, design, write and test Python programs to solve computational problems
- Reason carefully about computational problems and design algorithmic solutions before writing code
- Work collaboratively with partners or small groups to solve computational problems
- Design and develop programs that use abstraction and modularity
- Develop a toolbox of problem-solving strategies (such as divide-conquer-and-glue, recursion, and iteration), identify appropriate strategies for a particular problem, and apply those strategies to solve the problem
- Use computational models (such as execution frames and memory diagrams) to reason about computational processes.
- Translate computational problems, algorithms, and problem-solving strategies between English and Python
- It is never acceptable to present someone else's work as if it were your own. It violates the basic principles of academic honesty. Unless explicitly instructed otherwise, assume all work you hand in is to be yours and yours alone.
- While you are working on a homework assignment, you may collaborate with other students by talking about the problem or your solution in a natural language (e.g., English), but you may not use any formal language, and especially not Python. In other words, you should not be looking at other people's code (or problem set solutions), and you should not show your programs to another student.
- You are encouraged to use the class conference to discuss problem sets, but the same rules apply: discussions should be in English and should not include code that is part of a homework solution.
- When you turn in an assignment, you must list all other students with whom you collaborated. If you get significant help from any of the course staff, including the TAs, you should acknowledge that, too. Academic honesty requires it. If you are not sure what constitutes collaboration or significant help, err on the side of caution.
- You may consult public literature (books, articles, the web, etc.) for hints, techniques, and even solutions. However, you must reference any sources that contribute to your solution.
- When you use a public computer, save your work, remove the local copy when you are done, and log out. If you find someone else has forgotten to log out, then log them out without looking at any files or work in open windows.
- We will interpret a violation of any of the collaboration policies stated above as a violation of the Honor Code, and will bring any such violation to the attention of the Honor Code Council. Sadly, we encounter such violations almost every semester, and the rulings of the Honor Code Council tend to be harsh. For your sake and ours, please don't be tempted to cheat; you are likely to be much better off getting a poor grade on an problem set or exam than you are if you are found guilty of cheating!
Disabilities and Accommodations
If you have a disability or condition, either long-term or temporary, and need reasonable academic adjustments in this course, please contact Disability Services to get a letter outlining your accommodation needs, and submit that letter to your instructor. You should request accommodations as early as possible in the semester, or before the semester begins, since some situations can require significant time for review and accommodation design. If you need immediate accommodations, please arrange to meet with one of us as soon as possible. If you are unsure but suspect you may have an undocumented need for accommodations, you are encouraged to contact Disability Services. They can provide assistance including screening and referral for assessments. Disability Services can be reached at firstname.lastname@example.org, at 781-283-2434, by scheduling an appointment online, or by visiting their offices on the 3rd floor of Clapp Library, rooms 316 and 315.
Faculty Responsibilities on Disclosures of Discrimination, Harassment, and Sexual Misconduct
Pursuant to Wellesley College policy, all employees, including faculty, are considered responsible employees. That means that any disclosure of discrimination, harassment, or sexual misconduct to a faculty member will need to be shared with the College's Director of Non-Discrimination Initiatives / Title IX and ADA / Section 504 Coordinator, Sonia Jurado (781-283-2451; email@example.com). Students who do not wish to have these issues disclosed to the College should speak with confidential resources who are the only offices at the College that do not have this same reporting obligation. On campus, confidential resources include Health Services (781-283-2810 available 24/7), the Stone Center Counseling Services (781-283-2839 available 24/7) and the Office of Religious and Spiritual Life (781-283-2685). You should assume that any person employed on campus outside of these three confidential offices has an obligation to share information with Wellesley College through the Office of Non-Discrimination Initiatives.