ESC180: Introduction to Computer Programming


99 little bugs in the code

99 little bugs

1 bug fixed, run it again

100 little bugs in the code

Photo by Emile Perron on Unsplash

ESC180 is an introductory computer programming course. The course is taught with the assumption that students have no prior experience in programming. Python will be the only programming language used for this course.

You’ll start by covering fundamental programming concepts, including functions, conditional statements, syntax, and loops. You’ll use these basic concepts to create simple programs, ultimately learn more advanced concepts such as Python data structures and recursion and be introduced to features of computers such as memory storage and time complexity. For assignments, you’ll be writing your own code for interesting applications, practicing the skills and theory from class.  

For experienced programmers, much of this course will be repetition. For newer programmers with less experience, this course will require regular practice to build a new skill set.  


Professor

Professor Michael Guerzhoy [Source]

Professor Michael Guerzhoy

Michael Guerzhoy (pronounced “GER-joy”, with a hard “g”, and with the “j” pronounced like the “s” in “measure”) is teaching both ESC180 and ESC190 this year. He graduated with an honours bachelor of science from the University of Toronto in computer science, mathematics, and statistics. He went on to earn a master’s degree in both computer science and statistics. Following this, Professor Guerzhoy remained at the University of Toronto to teach several courses, before moving to Princeton University where he worked as a lecturer in the Center for Statistics and Machine Learning. In 2021, he returned to U of T to teach computer science in Engineering Science.


Course Highlights

  • Discovering Python is not a snake – it’s the programming language you’ll be using for this course.
  • That eureka moment when your program works after you spend hours debugging it.
  • Generating code that solves a big, real-life problem with very basic concepts. 
  • Figuring out how recursion works
  • Participating in some programming competitions hosted by Prof. Guerzhoy!

Life of an ESC180 Student

Lectures

There are typically three hours of ESC180 lectures per week. There are no tutorials, so be sure to pay attention during lecture! The professor will explain programming concepts and go through example code. Ensure that you attend every lecture, because there will be multiple quizzes throughout the semester! 

Practicals (Labs)

There are no tutorials for this course. ESC180 practicals are weekly 3-hour slots held in the Engineering Computing Facility (ECF) Labs. Here, you will work in pairs on assigned programming labs, getting feedback from TAs if needed. 

Labs (Practicals)

Labs are released weekly, and you have three hours to complete them. You will be challenged to program functions that complete specific tasks. The labs can be long and difficult, but they are very beneficial. Try to complete all of them: it is the best way to prepare for the midterm and final exam. They will give you an opportunity to practice coding and build on your programming skills. All labs are graded by TAs, who are also there to help if you get stuck. Don’t be afraid to ask for help, especially if this is your first-time programming. According to the syllabus, “teams that make their best effort toward completing the lab will be awarded full credit.”  
 

Projects

Projects are longer than labs and are typically assigned 3-4 weeks before the due date. They are more difficult because their scope is larger. Instead of writing one standalone function, you need to write at least 4-5 functions that accomplish a broader goal. For example, you might need to track a fictional person’s physical activity and happiness levels or build a program that predicts its opponent’s moves in a board game. You may choose to work with a partner on projects. Projects will be automatically graded on Gradescope based on many programming test cases.  

Midterm and Exam

ESC180 usually has a midterm and a final. In these exams you will be asked both conceptual and programming questions. For questions that require you to write code, you will have to do so using pen and paper. The code you write in the exams will be more conceptually challenging, although it will not be as long as code from labs. The challenge is writing it quickly and without external aids. Keeping up with the labs and practicing throughout the semester will reduce your prep time, and past exams are a great source of practice problems.