Syllabus for Introduction to Computer Science [Work in progress]

Description: This course provides a broad introduction to computer science — the empirical study of computation, data, and automation. Students will write computer programs in Python to explore fundamental areas of computer science, including hardware design, data representation, discrete mathematics, abstraction and recursion, fundamentals of programming, algorithm analysis, and more. The course is intended for both students who expect to major or minor in computer science as well as for those who are not planning to take additional course work in CS.

Learning objectives:

Students will gain knowledge and hands-on skills in:

  • The basic components of computer hardware and software
  • Fundamentals of data representation in computer systems
  • Thinking about and framing problems in computational terms, especially using abstraction and recursion
  • Implementing and analyzing basic algorithms


  • Hardware and software
  • Data representation (bits, bytes, and binary)
  • Algorithm development and analysis
  • Recent advances in computing

I am teaching this course in Fall 2023, with inspiration from the following sources: