COMP 2355: Introduction to Systems Programming
- The prerequisites for this class include a good understanding of basic programming constructs, such as branches (if, switch), loops (for, while, do), exceptions (throw, catch), functions, objects, classes, packages, primitive types (int, float, boolean), arrays, arithmetic expressions and boolean operations. This is a class on systems programming with focus on the C programming language and UNIX APIs. There will be programming assignments designed to make use of various Debian GNU/Linux system APIs. Programming assignments involve writing code in C or C++.
COMP 2555: Principles of Computer Forensics
- Principles of Computer Forensics is an introductory course in Computer Forensics - the examination of information contained in digital media with the aim of recovering and analyzing latent evidence. This course will provide students an understanding of the basic concepts in preservation, identification, extraction and validation of forensic evidence in a computer system.
COMP 3621: Computer Networking
- Computer networks are pervasive in our every day lives and in particular, the building of the Internet has been one of the most significant events in our technological history. In this course, you will be introduced to the fundamental principles of computer networking. Using the Internet as a primary example of a large-scale network, topics including the design of the Internet, application and transport protocols, congestion control, routing protocols, packet switching and link-level protocols are covered in this course. Today's networking cannot be considered without examining security issues surrounding it. In particular, the following topics will be covered over the course of the term to give students a deeper understanding of security in networking: vehicles of transmission, evolution of modern communication systems, including capabilities and limitations, file servers and their network protocols, sharing of data and devices, network topologies, telecommunications hardware and software, including modems, DSL, and cable.
COMP 3704/4704: Computer Security
- This course gives you an overview of computer security along with some cryptography. Some network security topics are also included. Other topics include coverage of risks and vulnerabilities, policy formation, controls and protection methods, role-based access controls, database security, authentication technologies, information warfare, host-based and network-based security issues.
COMP 3701/4701: Secure Software
- Many security problems in software are born when software developers make poor implementation decisions or unwittingly introduce bugs in their code. In this course, we cover many of the classical flaws in systems that can lead to security problems, including: buffer overruns, format string problems, overflows, exception issues, race conditions, etc. We also cover some webapp-specific topics such as SQL injection attacks, and cross-site scripting (XSS) attacks.
COMP 3704/4704: Foundations of Information Privacy
- Foundations of Information Privacy has been designed to introduce upper-level undergraduate and graduate students to the theories and tools available for the preservation of privacy in today's electronic age. As more and more sophisticated systems are developed to leverage the electronic availability of our personal data, our privacy is only as protected as the limitations on what information can be derived from the data. This course explores the fundamental concepts in information privacy, its measurement as approached by the cryptography, database and statistical disclosure control communities, following into the state-of-the-art mechanisms and algorithms developed to facilitate information sharing in a privacy-preserving manner. Besides these introductory principles, the course also explores specifics related to the preservation of privacy in microdata publishing, network traces, social networks and location-based services. The objective of the course is to equip students with a formal background in the fundamentals of information privacy.
COMP 4704: Information Theory
- This course explores the relationship between storage, communication and compression of data. We try to seek answers to questions of the following types: what is the ultimate transmission rate that a noisy channel can support? what is the ultimate compression factor that can be achieved while guaranteeing perfect recovery of the compressed data? what more can be achieved if one is willing to tolerate some prespecified small distortion of the recovered data (as in images or video)?
COMP 3704/4704: Data Mining
- Data Mining is the process of extrating useful information, implicitly hidden in large databases. Various techniques from statistics and artificial intelligence are used here to discover hidden patterns in massive collections of data. This course will be an introduction to these techniques and their underlying principles. Tentative topics to be covered include: regression, classification, clustering and association rules.
COMP 3704/4704: Privacy Preserving Data Mining
- Privacy Preserving Data Mining has been designed to introduce upper-level undergraduate and graduate students to the theories and tools available for the preservation of privacy in today's electronic age. The course begins with an introduction to the notion of “privacy” as approached by various communities. It then follows into an exploration of the algorithmic formulations required to perform typical data mining tasks (classification, regression, rule mining and clustering) in the presence of private data. Most of the focus will be on protocols to perform data mining in collaborative environments (data is distributed across organizations). The course will equip students with a formal understanding of data mining techniques as applied to non-sharable data.
COMP 4704: Secure Memory Models
- In this class, we study two main topics: distributed event ordering and byzantine agreement. These two problems are at the core of all distributed system problems and a fundamental understanding of them is exceedingly useful for actually building working distributed systems.