Doing research

If you are interested in pursuing a graduate degree under my supervision, I require the following:

  1. DISCRETE MATH

    1. You have taken a course on Discrete Mathematics and you are very comfortable with the material: Propositional Logic, Predicate Logic, Ordered/Unordered Structures, Relations, Functions.

    2. Preferably, you have taken an advanced course on Discrete Mathematics or Formal Methods: If you have not taken such course, I will require you to take the following course with me as a prerequisite (and expect you to perform very well): Formal Methods for Software Engineering.

  2. PROGRAMMING LANGUAGES

    1. You have taken at least one programming course, including one on Object-Oriented Programming, and you are very comfortable with the fundamental concepts: Class, Objects, Message Passing, Inheritance, Polymorphism, Casting, etc.

    2. Preferably you have taken a course on the Principles of Programming Languages and you are familiar with fundamental concepts of functional and logic programming.

    3. I will require you to take the following course with me (and expect you to perform very well): Comparative Study of Programming Languages

  3. SOFTWARE ENGINEERING

    1. You have taken at least one course on object-oriented architecture/design and you have strong familiarity with UML, design patterns, architectural patterns, processes etc.

    2. In addition to the above, I will require you to take the following course with me and perform very well: Software Design Methodologies.

If you wish to contact me, please list all courses (and the grades you have received) under each of the areas above, e.g. 1.1: ..., 1.2: ..., etc.


Back