ESC190: Data Structures and Algorithms (Winter 2023)


Course description   This course serves as an the second half of the introduction to computer programming and computer science. We will introduce advanced features of the Python programming language, and introduce the C programming language. We will implemente data structures and algorithms in Python and C, and analyze them. We will discuss good practices in software engineering (designing and building large software systems). We will analyze the efficiency of algorithms, and discuss designing efficient algorithms. Various research areas in computer science (AI, software engineering research, the theory of computation, etc.) will be introduced throughout the term.

Projects

Installing Visual Studio Code for C overview.

Books

Projects

Project 1. cities.txt, wiktionary.txt, autocomplete.h, main.c. due Feb 27 at 10:59pm on Gradescope

Project 2. Due Apr. 8 at 10:59p.m. Files/code: seamcarving.h, c_img.c,c_img.h,png2bin.py, 3x4.png, 3x4.bin, 6x5.png, 6x5.bin, HJoceanSmall.bmp, HJoceanSmall.bin. Bill Shi's png<=>bin converter. If you want Python code for png<=>bin (optional): png2bin.py, usepng2bin.py

Exams

Midterm

2023 midterm, Q1-Q4 solutions, Q5 solution from lecture

2021 midterm

2012 midterm

2011 midterm

Exam

The exam will be held during the exam period.

2023 exam

2021 exam

Previous midterms and exams are available on skule.ca

An inclusive environment

We strive to build and maintain an inclusive environment in class — an environment that allows every student to reach their full potential. Please do not hesitate to contact me and/or your preceptor to let us know if you need special accommodation or with any concerns.

Design credit: CS229, Jan 2019.