Tutorial Slides (2017 Version)
Below is the description for each deck of the Tutorial slides (2017 version).
Week 1
In this week, we do not talk much about examinable materials. Most of the slides are about introduction to the module and some administration details. I have included some of my advices in the second part as well. Hope you find it useful.
Week 2
In this week, we started with some general concepts of Computer Science (CS). Then, we introduced the Source language and its three components. The black-box concept was also mentioned to help you understand programs. During the class, the DRY (Don’t Repeat Yourself) Principle was illustrated as well.
Week 3
In this week, we mainly talk about two things: recursion and order of growth. Recursion is the core of CS1101S, which is the essential basis for you to understand later materials. Order of growth is a mathematical concept for us to describe the consumption of time and space. These two aspects are meant to be not easy. Thus, it is totally fine if you feel confused. You need more time and effort to become a master in recursion and order of growth.
Week 4
In this week, we started with more recursion (Hanoi tower and coin change). Then, the main topic is higher-order programming. The power of abstraction is fully shown in the higher-order functions. Some exercises from past year papers are included in the end.
Week 5
In this week, we first discussed about some general concepts of data abstraction and data structure. Then we talked about pair and list processing. An interesting implementation of pair is mentioned. Box-and-pointer diagram is emphasized.
Week 6
In this week, we go deeper into list and tree processing. More high-order functions in the library are emphasized, like map, filter and accumulate. We also finished the last typical example of recursion, permutation. Meanwhile, the new concept this year, searching algorithm, is also taught.
Week 7
In this week, we talked about data structure design and sorting algorithms (selection sort, insertion sort, merge sort and quicksort). We also reviewed the roadmap and concepts covered so far. All the best for your midterm test!
Week 8
In this week, we first time touched state-ful programming, with the power of assignment statement and while loop. We also discovered why computers understand our programs. A brief history of Unix-like system was also presented to clear your doubt about LEGO robotic programming.
Week 9
In this week, we focus on using environment model to understand mutable data and stateful programming. Environment model is a very important concept that need more practice. In the second part, we focus on arrays and loops. Meanwhile, it is mentioned list can be implemented using arrays.
Week 10
In this week, we touch an important technique on improving performance of the program – memoization (not memorization). It is going to be useful in your future data structure/algorithm modules. Meanwhile, we also introduce objects in JavaScript for the first time, which will lead to object-oriented programming later.
Week 11
In this week, we go deeper into object-oriented programming (OOP). More new concepts like inheritance, override, polymorphism are introduced. Although Source (or JavaScript) is not an ideal language to learn OOP, it is still quite interesting to study this paradigm in a pseudo-classical way.
Week 12
In this week, we mainly talk about meta-circular evaluator, a masterpiece originated from our textbook (SICP). It becomes a useful tool for us to revisit components of a programming language, understand more about environment model and obtain a higher-level understanding of the Source language.
Week 13
In this week, there are two major topics in our DG: first, an overview on web programming and web security. This is an industry that grows fast and you may want to learn more about it if interested. Second, we review the whole semester and give a wrap-up of the module. May the Source with you! All the best for your final examination!