Teaching

Present

CS 1656 - Introduction to Data Science

Spring 2017

This course provides an overview of data science technologies and techniques, offering a holistic view of the field, from data management & manipulation, to data analysis, and data presentation. The course covers the main data management/querying paradigms (Relational/SQL, XML/XQuery, RDF/SPARQL, Graph/Cypher) along with information retrieval, data warehousing, data mining, data visualization, and other data analysis topics. The course utilizes Python as the default programming language and leverages existing libraries, as appropriate.

Past

CS 1501 - Algorithm Implementation

Fall 2016

The course covers a broad range of the most commonly used algorithms: some examples include algorithms for sorting, searching, encryption, compression, and local search. The students implement and test several algorithms. The course is programming intensive.

CS/COE 449 - Introduction to Systems Software

Spring 2013, Spring 2016

This course introduces the students to the important systems language, C, and to several topics related to the hardware and software environment. These are issues related to device interfaces and hardware synchronization at the lowest level of the operating system, the linkage of operating system services to application software, and the fundamental mechanisms for computer communications.

CS 2550 - Principles of Database Systems (Graduate Course)

Spring 2014, Spring 2015

The principle objective of this course is to provide an in-depth knowledge of Database Management Systems design. Important aspects of distributed database systems and new data processing paradigms (such as data streams) are also covered.

CS/COE 1520 - Programming Languages for Web Applications

Spring 2015

Various programming paradigms are studied using Java and scripting languages. The use of Java in programming web based applications, network applications, and the use of the extensive Java libraries is studied. The programming paradigm of building software by gluing components is explored through the use of scripting languages such as Perl and JavaScript. Applications include developing GUIs and internet programming.

CS 1550 - Introduction to Operating Systems

Summer 2013, Fall 2013, Spring 2014, Spring 2015

The purpose of this course is to understand and use the basic concepts of operating systems, common to most computer systems, which interfaces the machine with the programmer. In particular, this class is meant to introduce processes such as the processing unit, process management, concurrency, communication, memory management and protection, and file systems.

CS 1501 - Algorithm Implementation

Summer 2014, Fall 2014

The course covers a broad range of the most commonly used algorithms: some examples include algorithms for sorting, searching, encryption, compression, and local search. The students implement and test several algorithms. The course is programming intensive.