COLAB Undergrad Roadmap

For the past year or so, we’ve been working towards creating a collaborative environment that can help undergrad students achieve their true potential in CS through augmented learning. 

The idea is pretty simple: put a sufficiently large group of enthusiastic students together, give them little nudges in the right direction and let them learn from the best of the best. 

At FAST NUCES Peshawar Campus, a prototype of this effort is known as COLAB. We started COLAB back in October 2017. Students of all batches were inducted through informal interviews. They are not expected to produce any artefact: no project, no deadlines. The only requirement is that they give time to COLAB and sit together. 

We do however, create a semi-formal plan that is aimed to provide nudges in the right direction. Through this post, I aim to provide the current status of this plan. We will discuss the plan around the semesters these students have in their four year study period. At the moment, I will share the plan and inshaallah, in the future, I might come back and add in the rationale of all the suggestions. 

General Workflow

Students are typically expected to keep their own working hours. The only requirement is that they present whatever they are working on on a regular basis. There are several presentations during the course of a week and everyone does a presentation of 10-60 minutes (depending on the complexity and their expertise.) 

Semester 1 

We assume that first semester students have not had any background in CS at all – even basic computer usage is not assumed. At FAST NUCES, we have an introductory programming course that starts from scratch. Specific points or goals in this semester are: 

  1. Complete the intro course. The language of choice here is Python. Videos of my own lectures (in Urdu) are available here. (Videos use Python2 but we have switched to Python3 since then.)
  2. It is strongly recommended that students start using Linux as their default OS. A basic command line course is shared with students near the end of their semester. (The course is paid but free coupons are shared with interested students.) 
  3. Emphasis is laid on abstraction and practice. A resistance to switching languages later on is removed (albeit partially) by introducing C/C++ in the final quarter of the semester. 
  4. Going through at least half of the Guttag book on Python is recommended. 

Semester 1 Break 

After the first semester finishes, students get around 15 days’ break. During this, they are suggested to go through MIT’s Intro to Programming course. (There’s a newer variant available but I like this version.) 

Semester 2 

The second semester is usually light in terms of formal curriculum. COLAB students are therefore suggested to start with a detailed Web Development curriculum along with their formal studies. Concepts covered (probably giving 1-2 hours’ time to each) are: 

  1. HTML, CSS 
  2. Javascript 
  3. Typescript
  4. Node.js 
  5. PHP
  6. Django 
  7. … 

Videos from certain free courses are shared with students but they are free to follow whichever source they want to go with. 

Some other important topics are also covered by students.

  1. SSH and remote connections 
  2. Backups and rsync 
  3. Typing skills 

Summer 1 

Summer is where the true benefit of COLAB comes in. By now, students are comfortable with presenting their work and working with servers and client machines. Due to working with Linux, fear of the command line is generally expected to be at its minimal. 

For the first summer, the main theme is System Administration. Topics will depend on when you are reading this but in 2018, we covered the following: 

  1. VoIP (Aserisk and FreePBX) 
  2. Amazon AWS (EC2, S3 – Web front as well as CLI and APIs through PHP and Python) 
  3. Setting up servers on remote machines (ProFTPd) 
  4. OpenVPN 

Having done some of this practical stuff, we finally decided to bring in some formal network concepts. The following were covered from a practical standpoint: 

  1. Introduction to networks, classes of networks, IP addresses and ports 
  2. Subnetting (basics) 
  3. Firewalls (IP tables) 

Students finally took a 2-week break to freshen up for the next semester. 

Semester 3 

In this semester, there are two technical courses covered at FAST NUCES Peshawar: Computer Organization and Assembly Language and Data Structures. 

  1. For assembly language, the excellent course by Bilal Hashmi of VU is recommended. Videos are available for free. After the first year’s experience, we feel it’s best to cover at least the videos of this course during the final weeks of Summer 1 instead of waiting till the start of this semester.
  2. Linear Algebra is also taught in this course. It is highly recommended that students implement everything they have studied through code! We are working on formalizing this but a mechanism similar to Coding the Matrix can be used. It’s essential to do this to bridge the gap between Mathematics and Computer Science in the minds of the undergrad students. 

To be continued … 

Our first COLAB batch is currently at this stage. We will be adding more content to this as we go along inshaallah