aalok thakkar: introduction to computer science

summer 2025: cs-1102

Maria Sibylla Merian, Moths, Caterpillars, and Foliage (1705)

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:

  1. 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.
  2. Algorithmic Thinking: Develop the ability to analyze and design algorithms as systematic problem-solving approaches, with an emphasis on precision and efficiency.
  3. 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.
  4. 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.

  1. 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.
  2. 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.
  3. 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