Select a category to the left.



Light or dark? Choose how the site looks to you by clicking an image below.

Light Dark


Preferred Language

All content on is originally in UK English. However, if content exists in your preferred language, it will display as that instead. Feel free to choose that below. This will require a page refresh to take effect.


"" details

Domain Name:
Site Version: 3.0.1
Last Updated: 2019/08/18
Welcome to CS140! This class is named "Data Structures and Algorithms I". In this course, you will be going back to C++ (from your last class) and continue to learn more about it. Furthermore, you will also cover more about how to actually implement some of the features and algorithms of the STL library, and understand Data Structures (hence the course name).

This time around, I'm the head TA of the course. Each of you are assigned one of three lab sections. Unlike in CS102, these labs are nearly 2 hours long. If you are in Sections 1 or 3, you're in one of my sections. Depending on which section you attend, I may have another TA as an assistant to help out.
  • Section 1 (8:00 - 9:55): I'm hosting.
  • Section 2 (10:10 - 12:05): The first half will be hosted by John Carmack. I'll host the second half.
  • Section 3 (12:20 - 14:15): I'm hosting.

Office Hours:
Min H. Kao Building
Room 313

By Appointment (Email "" to set up a time).

Changes due to COVID-19:
Because of COVID-19, all courses have moved to online. This class is obviously no exception. I already post all notes that I put up on the dry-erase board online. You may find those here. All TA office hours have moved to Zoom, as well as lecture and lab. Please go to Piazza for details on that. I may post more guides than usual to provide as much content online as possible.
This section will have links to guides or documentation that I write and find valuable for this course. Typically it's for common issues I notice among students. Check frequently!
Lab Sections
In lab, I may write various example programs on a projector or write concepts on the board. I archive every file from every lab session, and may put them up online (depending on the material). I do not post lab solutions.

Each module below will have tags that will let you to tell what content is in them. Here are the possible tags you may find:
Mini-guides on concepts that you will use in each lab.
Template code that is for the assignment is given.
There is a simulator to compare your code results to.
There are lab instructions, procedures, suggested development order, or hints.
There are files on for that module. These are "SIDE" files, which may be miscellaneous programs, notes, or board drawings. As such they may help you on the lab assignment, but they may not.
No guide available.
Just a heads up: Do not rely on me writing guides. I may write them... And I may not. I recommend taking notes just in case. There may not even be a lab guide. In that case, the module will be greyed out and unclickable.