Welcome to CS 105!

CS 105, Programming Languages serves as the fourth course in our required programming sequence. In this sequence, it is the only 100-level course. It is the most technically deep, the most intellectually challenging, and the one in which you’ll develop the most diverse and highest-level thinking skills.

CS 105 introduces you—through extensive practice—to ideas and techniques that are found everywhere in today’s programming languages. These ideas and techniques will continue to be found among the programming languages of the future. Foremost among these ideas are functions, types, and objects. CS 105 also introduces you to the mathematical foundations needed to talk precisely about languages and about programs: abstract syntax, formal semantics, and type systems.

Getting Started: Your first major task in this course is to read the syllabus; this document explains all of our course logistics and policies. All students are expected to know and adhere to all of our course policies, so please take the time to read it in full! Here are common questions that are answered in the syllabus (so if you ask them, we'll answer by gently reminding you where you can find the answer yourself):
  • Do we have any exams? When are they?
  • What are the policies for late assignment submissions?
  • How does grading work in this class? Can I request a regrade?
  • What kind of work can I do with a classmate in CS 105?

Quick Access Files

Here are links to some course files/pages you will want to access regularly: