In the past, I have taught courses in compilers, programming languages and operating systems. These days I teach courses in service oriented architecture, enterprise security, distributed systems, mobile and pervasive computing, and enterprise computing.


CS 522 Mobile and Pervasive Computing is an evolving course in mobile and pervasive computing. It covers mobile communications standards (including GSM and Mobile IP), mobile data management, power management and adaptive computing, location and context-aware computing, security and privacy (including RFID), and applications of mobile computing. Assignments involve applications of the course material on the Android mobile telephone platform.


CS548 CS 548 Engineering of Enterprise Software Systems is a course in service oriented architecture (SOA). It includes some background in XML technologies and Web services (including REST), workflow modeling (including UML and Petri net based approaches), and semantic data modeling using RDFS and OWL. It essentially provides a software engineering counterpart to the course in distributed systems.


CS549 CS 549 Distributed Systems teaches programming and algorithmic aspects of distributed systems. The assignments involve building distributed applications using Java sockets, RMI and JEE. The course material teaches fundamental concepts in building fault-tolerant distributed applications, including transactions, logical and vector time, Byzantine broadcasts, state machine model, process groups, and peer-to-peer networks.


CS594 CS 594 Enterprise Security and Information Assurance is a course that I am developing, to be offered for the first time in Spring 2011. It has CS 548, the SOA course, as a prerequisite. It will cover Web services security tools such as SAML and XACML. More interestingly, it will look at security engineering in the context of model-driven architecture and workflow modeling.