Practical Programming

This is an industry-oriented course that prepares students to undertake jobs and internships in many fields of Software Engineering. This course is very broad, rather than deep. It introduces students to many programming methodologies that would allow students to construct practical applications. This course is fast paced and the students are encouraged to practice the introduced material at their own pace.

More than 50% of lecture time will be spent on writing real code. The code files will be posted on this website just after the lecture

Time:6:00 PM - 7:30 PM, every Friday
Instructor:Sami Abu-El-Haija. samihaija [at] yahoo [dot] com


March 5th
  • Thanks a lot for the participation today. I am very glad that you all enjoyed web programming. The files should be downloadable from the course outline below.
  • Resumes: If you intend to practice the kind of programming that we do in class, add your "practice" projects on your resume, and then send me your resume. I will forward it arround to company recruiters that I usually communicate with.
  • Next week: will be split into two parts; Dynamic Web Applications, and Machine Learning. We will write a small dynamic web application. Perhaps either an mini-email client, mini-chat service, or even mini-facebook if you guys want. In algorithms "section", we will introduce an easy-to-understand, yet a very powerful Machine algorithm. I honestly think that you will enjoy next class. I think that Machine Learning has the most interesting class of algorithms, of all times.

March 4th
  • Sample code from previous class have been posted on the course outline below. Thanks to students: Owajigbanam "Iggy" Ogbuluijah, who looked up the code, as well as: Jampala Anapurnesh, who fixed a minor bug.
  • Tomorrows class: We will be introducing XML and HTML. We will basically talk about different HTML tags and how they would display on a web page. Afterwards, according to your in-class votes, we could either introduce methods on how to "style" a webpage using Cascading Style Sheets (CSS), or instead, dig into some programming by writing Client-side programming (using Javascript)

Febuary 24th
  • Friday's class will be about Network Programming. We will be writing a small application that can communicate with another application over the a network (internet). We will be using Java since most of you are familiar with it. Java is a perfect language for such a program since it contains easy-to-use libraries that our application needs. Our application will be less than 10 lines of code.
  • For the 15-minute algorithm, we will be solving a problem using dynamic programming. A technique that people regard as 'difficult', but we will discuss a way to make such problems fairly easy to solve.

Febuary 2nd
  • The C# files that we wrote last lecture will be posted on this website during the week (including the database files).
  • Your homework would be to install Microsoft Visual Studio 2008 (Available on MSDNAA @ UofT).
  • Next class we will take the GUI (event-driven) programming one step to introduce MVC frameworks, and we will also continue the algorithmic aspect of the course to introduce elementary graph algorithms.

January 25th
Thank you all for the dynamic participation last lecture. The Microsoft Access database that we designed in class should be downloadable from the syllabus below.
For the homework part, please either email me the solution for the Circular Sort Algorithm, or send me a solution for the Tennis Probability problem.

Next class we will write a piece of Software that would access a database. The code will be written using C#, a fairly easy language to learn (especially that all of you have done programming with either Java or C++. C# is more similar to Java). During next class, I will introduce the concept of "O.R. Mapping". An industry-standard in designing database applications.
Next week's algorithmic part will be an introduction to Graph Theory. One of the most exciting topics in Computer Science.


  • Object Oriented Programming
  • Network Programming - Sample Code
    • Basics of Network Programming
    • Protocols, Security issue, and ideas
  • Database Programming
    • Introduction to Relational Databases. Sample Database
    • Database-driven programming
  • Algorithmic Programming
    • Recursion and Dynamic Programming
    • Elementary Graph Theory
  • (if time permits) Web Programming
    • Client-Side programming. Sample files
    • Server-Side programming

Register for the course

Registration is now closed. Please contact the course instructor for manual registration.