Tutorial Slides (2018 Version)
Below is the description for each deck of the Tutorial slides (2018 version).
Week 1
In this week, we introduced some history of the module, module organization. Yunpeng also provided some tips on learning CS and CS1101S. Most of the materials are non-examinable.
Week 2
In this week, we started with some general concepts of Computer Science (CS). Then, we introduced the Source language and its three basic components. The black-box concept & abstraction was also mentioned to help you understand programs.
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 comes, higher-order programming. The power of abstraction is fully shown in the higher-order functions. Some exercises from past year papers are included after this section. In the end, we also provided a brief introduction to programming language concepts.
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. In the end, we also gave insights on identity & equality.
Week 6
In this week, we go deeper into list and tree processing. More higher-order functions in the library are emphasized, like map, filter and accumulate. We also finished the last typical example of recursion, permutation. Meanwhile, searching algorithm is also taught.
Week 7
In this week, a brief history of Unix-like system was also presented to help you get started on LEGO robotic programming. We also talked about sorting algorithms (selection sort, insertion sort, merge sort and quicksort). In the end, we reviewed the roadmap and concepts covered so far. All the best for your midterm test!
Week 8
In this week, we first reviewed and summarized some basic principles for data structure design. Then, we first time touched state-ful programming, with the power of assignment statement. Inspired by set_head and set_tail, we also introduced some mutable data structure.
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, we declare that almost all problems can be solved either by list + recursion or array + iteration (loop).
Week 10
In this week, we talked about how to use iteration to implement search and sorting. We also touched an important technique on improving performance of the program – memoization. It is going to be useful in your future data structure/algorithm modules.
Week 11
In this week, we mainly emphasized on stream, a powerful representation of infinite list. Importantly, to delay the evaluation, always wrap the operation into a function.
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!