Courses Taught

My teaching portfolio concentrates on past 24 years during which I taught 18 subjects at graduate and post-graduate levels in Indian, European and North American Models of Education.

Big Data Algorithms (2013/15)
The course covers mathematically rigorous models for developing such algorithms, as well as some provable limitations of algorithms operating in those models. Most techniques discussed in the course come from research in the last decade and of the algorithms we discuss have huge practical utility. We will discuss lower bound methods in some models showing that many of the algorithms we presented are optimal or near-optimal. These methods are usually based on communication complexity and information-theoretic arguments..  Expanded description

Human Computer Interactions (2011/12)
The course is designed to equip graduate level students with the latest developments in the Human Computer Interaction. The main objective is to get students to think constructively and analytically about how to design and evaluate interactive technologies. Basically, the course will introduce them to key areas, theoretical frameworks, approaches and major developments in HCI. Finally, students will gain a broad understanding of the most challenging problems and what progress has been made towards solving these problems.  Expanded description

Taxonomies, Ontologies and Semantic Web (2011/12)
The course is designed to equip graduate level students with the latest developments in the Semantic Web scenario. Semantic Web is an exciting new development for the future of the WWW. Semantic technologies represent a fascinating combination of web technology, database technology, modeling, formal logic, and artificial intelligence. Students will be introduced to many useful Semantic Web concepts and tools. Finally, students will gain a broad understanding of the most challenging problems and what progress has been made towards solving these problems.   Expanded description

Data Science (2007/2009/2012)
This course is designed for graduate level students with a background or experience in science, statistics, research, and / or information technology with interest in interdisciplinary work focused on managing Big/Large-scale Data using information technologies as their tools. The curriculum covers broad areas of data science and offers students to specialize in data analytics, data storage and management, data visualization or general systems management.  Expanded description

Semantic Web (2007/2008/2009)
The Semantic Web is not a well established field yet. It is a new ongoing international initiative. The concepts, the ideas and the tools are still in the forming state. Computer Scientists from industry and academia are exploring the possibility of creating a "Semantic Web," in which meaning is made explicit, allowing machines to process and integrate Web resources intelligently. In this course, we will study the world of the next generation Web. Topics will include World Wide Web Consortium (W3C) standards such as the Extensible Markup Language (XML) and the Resource Description Framework (RDF), as well as Description Logic and Ontologies. Expanded description

Web Mining (2006)
Web mining aims to discover useful knowledge from the Web, e.g. Web hyperlink structure, Web  page content and Web usage log. Based on the fundamental type of data used in the mining process, Web mining tasks are classified into three main types: Web structure mining, Web content mining and Web usage mining. The goal of this course is to present these tasks, and their essential algorithms. The course assumes that students are familiar with basic concepts in data mining. Expanded description

Data Mining (2003/2005/2007)
Knowledge discovery is the process of discovering useful regularities in large and complex data sets. The field encompasses techniques from artificial intelligence (representation and search), statistics (inference), and databases (data storage and access). When integrated into useful systems, these techniques can help human analysts make sense of vast stores of digital information. This course presents the fundamental principles of the field, familiarizes students with the technical details of representative algorithms, and connects these concepts to applications in industry. The course assumes that students are familiar with basic concepts and algorithms from probability and statistics. Expanded description

Artificial Intelligence (1998-2003/2005/2006)
Includes an introduction to artificial intelligence as well as current trends and characterization of knowledge-based systems. Search, knowledge representation schemes, production systems, and expert systems will be examined. Additional areas include knowledge discovery and neural learning. Expanded description and CIS 290 - Artificial Intelligence

Software Engineering (2002/2004/2005/2007)
Software life cycle processes including analysis, design, modifying and documenting large software systems. Topics include software development paradigms, system engineering, function-based analysis and design, and object-oriented analysis and design. Students will implement a working software system in a team environment. Expanded description

Information Retrieval & Extraction (2006/2008/2011)
The objective of this course is to elaborate on the fundamentals of information retrieval and extraction (IR & IE), study of indexing, search, relevance, classification, organisation, storage, browsing, visualisation, etc. Focus on prominent computer algorithms and methods used in the field from a computer scientist's perspectives.  Expanded description

Software Project Management (2002/2004/2006)
Methods and procedures for managing a software development project. Includes notions of project planning; time, cost and resource estimation; project organizational types, staffing (team assembly) and training considerations, leading and motivating computer personnel, and methods for monitoring and controlling the progress of a project. Quality management and risk assessment are considered. Case Studies of successes and failures will be studied. Expanded description

Operating Systems Principles (2004/2005)
The organization and structure of modern operating systems and concurrent programming concepts. Operating system concepts: concurrent processes, basic synchronization techniques, deadlock, memory management, file systems, security, networks, distributed processing. Expanded description

Database Systems (2004/2006)
Relational query languages. Semantic data models. Logical and physical database design. Privacy issues. Implementation techniques (catalogs, query optimization, concurrency control, security and integrity enforcement). Expanded description

Internet Application, Design and Development (2005/2006)
Issues in application design specific to Internet hardware, software and users. Students will develop a variety of projects and a final project. Topics will include HTML integration, CGI programming, XML, Java servlets, internationalization issues, client-server and database connectivity. Expanded description

Analysis and Design of Data Systems (2005)
Review of data systems and data processing functions, technology, organization and management, emphasizing industrial and commercial application requirements and economic performance criteria. Survey of systems analysis, design, modeling and implementation tools and techniques. Design-oriented term project. Expanded description  

Scientific Communication Techniques (2001/2003/2004/2007)
This course will provide students with a conceptualized framework from which to develop well-organized, meaningful scientific presentations. Graduate level overview of techniques for reading, speaking and writing scientifically. Emphasis will be on oral presentation delivery, proposal development, content organization and audience perspective. The course consists of lectures, student presentations and constructive critiques that takes place intensively over the 6 week course period. Expanded description

Discrete Mathematics (1996 - 2004)
The goal of this course is to introduce students to ideas and techniques from discrete mathematics that are widely used in Computer Science. The course aims to present interesting ideas; each one will be geared towards a particular well-known application. Thus, students will see the purpose of the techniques at the same time as learning about them. Expanded description