Why do programmers prefer dark mode?
Because light attracts bugs đ
Now that youâve learned the basics of programming from ESC180, you can start learning about its applications. In ESC190, you’ll be introduced to the C programming language, algorithms, and data structures. Algorithms are a set of instructions that process an input into a desired output. Examples of algorithms include data sorters, search engines, and shortest path finders. Data structures are ways of storing data. Examples include linked lists, stacks, queues, and hash tables.These are useful in a variety of contexts, as youâll see in the course.
The course will have sections covering a type of algorithm, programming method, or data structure. Along the way, youâll code in Python and C, learn how to implement different algorithms and data structures, and analyze their performance. This course is not about learning every feature of a language. ESC190 is about using the simple tools learned last semester to build more advanced programs.
Course Highlights
- Learning the C programming language! C, unlike Python from ESC180, is much more low-level, and memory management must be done by the programmer. While C programming is more difficult, C provides greater insight into what occurs inside the computer, and programs typically run faster. Â
- Learning about different data structures and algorithms that you might have heard of in the past:Â
- Linked lists, queues, graphs, trees, hash tables
- Sorting, dynamic programming, graph traversal (breadth-first and depth-first), shortest path (Djikstraâs, A*), gradient descent
- Complete projects that have real-world significance. Last yearâs projects were a weighted autocomplete function that worked on tens of thousands of words and a seam carving program for smart image-resizingÂ
Week in the Life of an ESC190 Student
Lectures
There are typically three hours of lecture per week in ESC190. These cover a range of topics, from basic C programming to gradient descent. There is no textbook for this course, so make sure you go to lectures and take notes. Also, much like in ESC180, there will be many in-lecture quizzes throughout the semester. Â
Practicals (Labs)
The labs in ESC190 will likely be held similarly to those in ESC180. However, both courses will have different instructors this year, so the structure and expectations may change.
Labs and Projects
Like ESC180, ESC190 has two types of assignments: labs and projects. They are structured similarly as they are in ESC180, but topics are much more advanced (and interesting).
Midterm and Exam
The midterm and exam are structured similarly to those in ESC180. ESC190 tests can include a combination of Python and C programming. Tests are a little more theory-focused than in ESC180, so make sure to study the course theory on top of writing the labs. Past midterms and exams are also good study resources. However, like with other courses, the types of questions that appeared on previous yearsâ exams might not be the same as yours. Â
How to Succeed
Quick Tips & Equations
- Understand everything about pointers in C. Briefly put: * will provide the value at an address, and & will provide an address.
- Identify the key differences between each data structure and use these differences to memorize how the structure functions and how different operations (e.g., set, get, remove) can be performed.
- Practice different ways of implementing the same algorithm. During assessments, you may be asked to implement an algorithm in a specific way (e.g., using recursion).
- Practice working with Abstract Data Types (ADTs) – examples can be found in past tests and exams.
More Details
Many of the tips from ESC180 will be useful here too, so check them out in the Introduction to Computer Programming overview. We have included a few more below that are specific to ESC190.
If youâre writing a function in C and are struggling with the beginning, remember that the most important parts of a function are the output (the very end) and the processing (the middle). So, try to write the middle or end of the function and then work your way up to the start. This might make things easier, as youâll know whether the function meets processing and output specifications. This lets you focus on connecting the beginning of the function with the code you have already written.
Note: this technique can be especially useful when writing a recursive function.
When it comes to programming and computer science, you can easily get caught up in only writing and using code. Since there is more theory in ESC190 than in ESC180, you’ll need to review lecture notes and do the labs.
Warning: this doesnât mean that you can get by only reading your notes. Your emphasis should still be on implementing algorithms and data structures for different applications. The theory will just help you structure your code and thinking.
Pointers are a big part of this course, so make sure to pay attention at the start, and gain a thorough understanding of them early on. Don’t be afraid to watch YouTube videos or do tutorials related to pointers, as knowing pointers will make all of C so much easier.
Beyond First Year
- By the end of this course, you’ll know how to program in C.Â
- In ESC180, you saw how small functions can interact to make a useful program. ESC190 will take this one step further: it will demonstrate how more complicated algorithms and data structures can be made to work together. These interactions form the basis of the complex software used in our daily lives. Theyâre also the basis of fields like machine learning and artificial intelligence.
- Youâll see that computer science is closely tied to math. Computer scientists use calculus (e.g., gradients) and linear algebra (matrices, vector spaces, etc.) extensively in their work.
- Given the theoretical foundation of computer science, you donât need to be a great programmer to succeed in the field. Similarly, you donât have to be a great computer scientist to be a great programmer. However, this doesnât mean that you should neglect one or the other. We would recommend building your skills in both areas as much as possible.
- If you want to land a software-related internship, ESC190 will introduce you to the theory and implementation behind some concepts that are commonly seen on programming interviews.
- The programming skills gained here will help you in several upper-year courses in the Electrical and Computer Engineering, Robotics Engineering, and Machine Intelligence majors.
Note: The course code for Computer Algorithms and Data Structures used to be CSC190. You may still see it referred to as such on some websites (e.g. courses.skule.ca).