A lot of people have been asking me for a retrospective of the Lisbon MSIT-IS (Masters in Information Technology – Information Security) program from Carnegie Mellon, so I decided to post here a review of the previous semester.
First of all, this is a Dual Program (MSIT-IS from CMU and Mestrado em Segurança Informatica from FCUL). The entire program is held at FCUL in Lisbon, although a lot of the courses are lectured from Carnegie Mellon. You also have the option to go to Pittsburgh for the Summer Semester to write your Thesis.
The program started the last week of August ’08. The portuguese students were invited to go to Pittsburgh for an orientation session and for the first week of classes. There, we got familiar with the campus, school procedures and we had a taste of what is to be a student at CMU.
After that week we returned to Lisbon, where we attended classes in a high-tech classroom prepared for video-conferencing with Carnegie Mellon at FCUL. All remote classes were live and interactive. Students in Portugal could see students at CMU (and vice-versa), they could interrupt the class and ask questions, etc. The experience was quite pleasant and it’s pretty much like we were there.
In regards to the courses, the first semester was consisted of three core courses:
- Fundamental of Embedded Systems
- Packet Switching and Computer Networks
- Introduction to Computer Security
You can take a look at the syllabus for each course here. All the three courses were a lot of fun, … and very intensive.
In Fundamentals of Embedded Systems we covered the ARM processor, which is the most popular 32-bit processor for embedded devices (being the iPhone one of examples). We started by learning Assembly for ARM processors, then we learned how to optimize code (both in Assembly and C). The lab projects were group projects and C/Assembly based. For the lab projects we used an X-Board powered by an X-Scale processor from Intel. From my understanding next year they’ll be using Gumstix which will certainly make the lab projects even more interesting. Then we learned about Exception Handling and SWIs; Linking and Loading; Flash memory; Memory-mapped I/O, Polling and Timers; Serial Communication; Interrupts; Processes and Scheduling; Concurrency; Synchronization and Deadlocks; Real-time (RT) operating systems & Scheduling algorithms; and Memory Protection and Virtual Memory. The last lab project was to implement parts of an Operating System, like the scheduler, semaphores and timer (both for non RT and RT). This class was a remote class, taught from Carnegie Mellon.
In Packet Switching and Computer Networks we were asked a question in the first lecture: Explain the Journey of a Packet. The goal of the course was to be able to answer that question. The covered topics were SONET; Transport Network Protection & Restoration (SONET Rings); Switching Architecture; Nonblocking Switch Architecture; Point-to-Multipoint Switch; ATM Overview; Network Traffic Control; MPLS; RSVP & RSVP-TE; and GMPLS. The lab projects were individual projects and Java based. Basically we needed to implement some networking protocols such as SONET setup and transport; Queueing/Scheduler algorithms; Label Switching; and Constraint based routing. The last project was actually very interesting, where we needed to design the core network for an ISP, “buy” the equipment, etc. Unfortunately the timing for the last project was very bad (overlapped with the finals week), so most of the students didn’t finish the project. Besides the lab projects, we also had weekly paper reviews and problem sets. This class was also a remote class, taught from Carnegie Mellon.
In Introduction to Computer Security we covered Fundamentals Security Concepts; Security Paradigms (like Cryptography Algorithms, Digital Cash, Authentication types, etc); Models of Distributed Secure Computing (like Classes of Attacks, Authorization, Secure Channels, TCBs, Authentication, Firewalls, etc); and Secure Systems and Platforms (like SSL, VPNs, PGP, IPSec, etc). We had 3 group projects and 3 individual projects. For the group projects we needed to implement things like hardening a Linux server, deploy a Firewall, and deploy an Intrusion Detection System. The individual projects were reading assignments where we had to read a given chapter from a book and write a critical report about it. Besides the projects, we also had weekly problem sets. This class was a local class, taught by a professor from FCUL.
To conclude, I’m loving the program so far. I was told in the beginning that I needed to dedicate 60 hours per week for this program, but it’s almost impossible to get good results if you only dedicate 60 hours per week. Most of the students (including me) live for this program. Since we get up every day until we go to sleep we do nothing but work for the program and eat. Forget your social life for 16 months if you plan to get this Master. But I can assure you that it is a lot of fun and rewarding.
For the next semester, which will start tomorrow, I’m enrolled in the courses Secure Software Systems (locally), Network Security (VC from CMU) and Distributed Systems (VC from CMU). I’ll write another review once this semester is over. 🙂