thakkar: introduction to computer science

monsoon 2025: cs-1102-1

Pablo Picasso, Esquisse d'un Chameau. (1907)

Logistics:

Credits: 4
Classes: Mondays and Wednesdays, 10:10am to 11:40am
Classsroom: AC-04-LR-005
Teaching Fellow: Shobhit Singh
Teaching Assistants: Shrey Arora and Rehmat Kaur

Course Description: This introductory course offers a foundation in computational thinking as a powerful, structured approach to problem-solving. It is built around one uncompromising standard: correctness. Students will explore the core principles of computation and gain familiarity with key subdisciplines in the field.Working both with and without code, students will learn to design, analyze, and refine solutions with attention to correctness, clarity, and style. The course is anchored in two fundamental computational models: the functional model, which treats computation as the evaluation of mathematical functions, and the imperative model, which views it as a sequence of state-changing instructions. The objectives of this course are to:

  1. Algorithmic Thinking: Develop the ability to analyze and design algorithms as systematic problem-solving approaches, with an emphasis on precision and efficiency.
  2. Program Correctness and Design: Understand the theoretical principles of program correctness, as well as design principles that emphasize clarity, structure, and style in solutions.
  3. 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).
  4. Practical Coding Skills: Gain hands-on experience coding in OCaml, with opportunities to explore other languages such as Python, Haskell, Rust, Kotlin, and Prolog.
  5. Foundational Disciplinary Topics: Acquire an introductory understanding of subfields such as information theory, cryptography, compiler design, databases, numerical algorithms, quantitative modeling, and machine learning.

Prerequisites: The course will require a certain amount of mathematical maturity at least at the level of mathematics at the grade XII level or MAT-1000.

Grading: A serious student of a subject is not an idle spectator to a variety show but learns best by active involvement. This is particularly true of mathematical subjects. This course is structured to incentivise involvement through the following:

  1. Assignments: The course includes 3 take-home assignments. These are designed to supplement the lecture material and offer independent explorations in computer science. They constitute a third of the grade.
  2. Periodic Assessments: Throughout the semester, there will be a total of five short assessments, comprising of math tests, programming tests, and a viva. Instead of points, you will receive detailed feedback aimed at helping you identify areas for improvement and guide your learning. They constitute a third of the grade.
  3. Final Exam: The remaining third of the grade will be based on an in-class closed book final exam.

Policies: Please note the following policies:

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.