summer 2025: cs-1102

Logistics:
Credits: | 4 |
Classes: | Mondays, Tuesdays, Wednesdays, Fridays, 6:30pm to 8:30pm |
Classsroom: | AC-04-LR-004 |
Teaching Assistants: | Vaani Goenka and TBD |
Instructor Office Hours: | Fridays, 10:00am to noon at AC04-705 or by appointment |
Links:
Course Outline and Lectures |
Resources and Reading Materials |
Lecture Notes and Code |
Problem Sets |
Frequently Asked Questions |
Course Description: This course on the fundamentals of computer science is built around a single uncompromising standard: correctness. Computation is the disciplined transformation of well-specified inputs into correct outputs. A computer program, therefore, is a precise, error-free realization of a procedure that satisfies an explicit specification. Students will learn to specify problems clearly, design systematically, and reason rigorously, both with and without code. The course is anchored on two core models of computation: the functional model, where programs are pure mathematical functions, and the imperative model, where computation is the controlled evolution of state. Mastery of these paradigms enables students to build systems that are correct by construction. The learning objectives of this course are:
- Specification and Correctness: Learn to precisely specify computational problems and develop solutions that are correct by construction. Prove their correctness using induction, loop invariants, and other formal methods of reasoning.
- Algorithmic Thinking: Develop the ability to analyze and design algorithms as systematic problem-solving approaches, with an emphasis on precision and efficiency.
- Reading, Writing, and Reasoning about Code: Build the ability to read, understand, and critically analyze code, focusing on correctness, structure, and intent. Gain hands-on experience coding in OCaml, with opportunities to explore other languages such as C, Rust, Kotlin, Python, and Prolog.
- Computational Models: Explore computer science and computation through two core paradigms: the functional model (evaluation of mathematical functions) and the imperative model (state manipulation via sequences of instructions).
Prerequisites: The prerequisites for this course are MAT-1000 or mathematics at the grade XII level. Students are expected to complete the reading on Mathematical Foundations of Computer Science.
Grading: A serious student of a subject is an active participant in their learning, not just an observer. This is especially true in fields like computer science and mathematics. The key to success in this course is to prioritize understanding and growth, rather than focusing on optimizing for grades. To encourage this, I will not specify exact point values for any assessment. You will not receive scores for in-class assessments or take-home assignments. Instead, each assessment will provide detailed feedback aimed at helping you refine your understanding and improve your ability to apply knowledge effectively.
- In-Class Assessments (1/3 of the grade): Every Friday, there will be a closed-book, in-class test. Instead of points, you will receive detailed feedback aimed at helping you identify areas for improvement and guide your learning.
- Assignments (1/3 of the grade): There will be 3 take-home assignments throughout the course. These assignments are designed to complement your learning and encourage independent exploration of topics not directly covered in class.
- Final Exam (1/3 of the grade): The final exam will take place during the last class and will be equally weighted. It will be an in-class, closed-book exam without cheat sheets.
Policies: From Ashoka's Academic Integrity Policy (MyAshoka → Information and Documents → Office of Academic Affairs): plagiarism—which is a matter of producing academic work that borrows, without acknowledging, from another person's work—is a serious academic offense. All violations of Academic Integrity Policy (including but not limited to plagiarism and use of AI) will result in a F grade for the course. Please familiarize yourself with the policies and sanctions.
Support: Students are encouraged to reach out to University offices such as the Office of Learning Support, Ashoka Center for Well-Being, and Center for Writing and Communication for additional support.
Calendar:
Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday |
---|---|---|---|---|---|---|
Jul 6 |
Jul 7 Lecture 1 |
Jul 8 Lecture 2 |
Jul 9 Lecture 3 |
Jul 10 Lecture 4 |
Jul 11 Assessment 1 |
Jul 12 |
Jul 13 |
Jul 14 Lecture 5 |
Jul 15 Lecture 6 |
Jul 16 Lecture 7 |
Jul 17 Lecture 8 |
Jul 18 Assessment 2 |
Jul 19 |
Jul 20 |
Jul 21 Lecture 9 |
Jul 22 Lecture 10 |
Jul 23 Lecture 11 |
Jul 24 Lecture 12 |
Jul 25 Assessment 3 |
Jul 26 |
Jul 27 |
Jul 28 Lecture 13 |
Jul 29 Lecture 14 |
Jul 30 Lecture 15 |
Jul 31 Lecture 16 |
Aug 1 Assessment 4 |
Aug 2 |
Aug 3 |
Aug 4 Lecture 17 |
Aug 5 Lecture 18 |
Aug 6 Lecture 19 |
Aug 7 Lecture 20 |
Aug 8 Assessment 5 |
Aug 9 |
Aug 10 |
Aug 11 Lecture 21 |
Aug 12 Lecture 22 |
Aug 13 Lecture 23 |
Aug 14 Final Exam |
Aug 15 | Aug 16 |