Course descriptions

Computer Networks I: Computer and Network Security

Instructor: Partha Dasgupta, Arizona State University

Evaluation: final exam, lab assignments

Prerequisites:                        

·       Programming,

·       Data Structures,

·       Basic knowledge of Networking and Operating Systems

 

Security is at the forefront of the currents of computing news. Fraud has taken a front seat in the Internet, and is already causing significant financial losses that are climbing. The innovation in computer crime has blown the lid on many inherent flaws in our computing infrastructure (i.e. use of passwords) and financial infrastructure (i.e. use of credit card and account numbers). We are coasting in denial and spreading the losses and hoping things will get better. From "Evil Twins" to "Pharming", from "SQL Injection" to "Rootkits", the march of attack discovery is outpacing the fixes. The sinister truth is well stated by a trade magazine that said: "Computing at home has never been so powerful - and treacherous. Just as millions of consumers are buying new PCs and signing up for blur-fast Internet connections, cybercrooks are hatching schemes to take control of their machines."

 

We cover the techniques used by attacks to gain personal information and financial gains. We cover the countermeasures that are being deployed with limited success. We cover the variety of new tricks that play cat and mouse between fraudsters and security experts. We cover the inherent design defects that to unintended consequences. In addition we cover the latest research techniques and academic protocols that can stem the tide of attacks (virtualization, integrity checking, link farm detection and so on).

 

·       Part 1: Security Basics (Security Principles, Threats and Attacks, Vulnerabilities, Countermeasures, False solutions (e.g. shared secrets), Threat Models, Hardening Systems)

·       Part 2: Attacks (Virus, Trojans and Worms, Buffer Overflows, SQL Injection, Spam, Pharming, Link farms, Attacking software systems, Attacking Networks, Attacking Hardware, Rootkits and other Esoteric attacks, Social engineering)

·       Part 3: Countermeasures (Patches and security fixes, Awareness and Education, Cryptographic Solutions, Embedding security in software and hardware, Out of band notifications, Simple yet effective)

·       Part 4: Cryptography (Encryption and Hashing, Shared secrets, Challenge response, Public Key Systems, Digital Certificates, Digital Signatures, Key Management, Applications of cryptography in Web Transactions)

·       Part 5: Network Security (Secret Communication, Authentication, SSL and IPSec, PGP and Email, Intrusion Detection, Denial of Service, Honeypots and Tarpits)

·       Part 6: Operating System and Application Security (Programming secure software, Bugs and vulnerabilities, Application and Operating Systems, Firewalls, Virus Detectors, Software Signatures, "Kernel Integrity Checkers", "Application Integrity Checkers")

·       Part 7: State of the Art? (Are we in a sorry state?, Software trust management, Hardware trust management, Innovative tricks, Evasive virus scanning, Return of Obscurity Techniques (e.g. Steganography))

 

Lab exercises will cover topics as virtualization, rainbow tables for password recovery or RSA public key encryption.

Computer Networks II: Wireless Network Security

Instructor: Abraham Rubinstein, HEIG-VD Switzerland

Evaluation: final exam, lab assignments

Prerequisites:                        

·       Knowledge of communication protocols

·       LAN technologies (Ethernet)

 

Wireless technology is becoming ubiquitous, not only at home and at the work place, but also in public places with companies like Google offering the service for free in entire cities. Although the use of Wireless LAN brings with it increased mobility and the flexibility for the users, it can also be the source of considerable security risks, reliability problems and of low quality of service. These problems can be dealt with and solved with the proper level of knowledge of the technology.

 

This course will cover both theoretical and practical aspects of IEEE 802.11x networks, including a review of applicable standards, the protocol architecture, CSMA/CA, RTS/CTS and contention free access mode protocols, wireless security, including the weaknesses of WEP and WPA, physical layer channels in the ISM band, frequency reutilization, layer-2 wireless roaming, and troubleshooting aspects.

Web technologies: Search Engine Technology

Instructor: Alvaro Monge, California State University Long Beach

Evaluation: final exam, lab assignments

Prerequisites:                        

·       Data Structures

·       Algorithms

·       Java

·       fundamentals of Probability & Statistics

 

This class will study the technology used by search engines like Google in order to retrieve a ranked list of web pages that may contain the information that satisfies a user request (query). 

 

In this class, we will review traditional information retrieval (IR) techniques and move on to focus on how search engines work. In a traditional IR system, the collection of documents is static. Considering the WWW as a collection of web pages (documents), it is clear to see that this is a dynamic collection. Existing web pages change over time, some are created, others deleted, and they are also linked together -- what makes it a "web". A WWW IR system must therefore crawl the web to find new/changed web pages, index the terms in these pages, and when a query is presented, it must rank the retrieved pages by a measure that is indicative of the relevance of the web page to the query. 

This class will be a survey of the techniques used in this entire process.

Ubiquitous computing: Introduction to ubiquitous computing

Instructor: Olivier Liechti, HEIG-VD Switzerland

Evaluation: final exam, project

Prerequisites:                        

·       Java programming

 

Ubiquitous computing is a term coined by Mark Weiser to describe the third wave of computing. The idea is that people will increasingly interact with very diverse computing devices: mobile devices, interactive surfaces, sensors, etc. These devices are embedded in the environment and almost seem to "disappear". As a result, the interaction between humans and technology becomes more natural and more effective.

 

In this course, we will provide an introduction to ubiquitous computing and study topics such as ambient interfaces, context-aware computing and location-based services. We will address them from various perspectives, to highlight that ubiquitous computing is a multi-disciplinary field (human-computer interaction, computer mediated communication, distributed systems, middleware, etc).

Bioinformatics I: Introduction to bioinformatics

Instructor: Sami Khuri, San José State University

Evaluation: final exam, homework, exercises

Prerequisites:                        

·       Interest in biology

 

The need to understand the immense amount of data produced by large scale DNA sequencing is of paramount importance. Demands for sophisticated analysis of biological sequences are the driving force behind the rapidly expanding research area of bioinformatics.

 
This practical course provides an introduction to the main public domain tools, databases and methods in bioinformatics, including DNA and protein databases, such as Genbank and Swiss-Prot, software tools such as those at the National Center for Biotechnology Information (NCBI) and other web accessible applications.

 

Detailed description: http://www.cs.sjsu.edu/faculty/khuri/Yverdon_2008/

Bioinformatics II: Microarrays and gene-expression data analysis

Instructor: Carlos Andrés Peña, HEIG-VD Switzerland

Evaluation: final exam, lab assignments, exercises

Prerequisites:                        

·       Notions of Bioinformatics

·       Algorithms and basic programming

 

Gene-expression analysis, also known as expression profiling represents a logical next step to sequencing a genome. While the DNA sequence tells us what the cell could possibly do, the expression profile tells us what it is actually doing now. Gene-expression analyses profiling measures the activity of thousands of genes at once, creating a global picture of cellular function. These profiles can distinguish between cells that are actively dividing, for example, or show how the cells react to a particular treatment.

 

Microarrays, which are the most widely used gene-profiling technology, measure the relative activity of previously identified target genes. These experiments are providing unprecedented quantities of genome-wide data on gene-expression patterns. A number of computational tools are available for managing and analyzing the huge amount of data points that result from microarray experiments.

 

The goal of this course is to provide a basic understanding of these computational tools as well as of the underlying methods and algorithms.

 

Contents:

·       Introduction and experimental biology background.

·       DNA microarrays and gene expression.

·       Gene-expression data analysis.

·       Network modeling from gene-expression data.

Software engineering I: Open-Source Software Development

Instructor: Cay Horstman, San Jose State University

Evaluation: final exam, project

Prerequisites:                        

·       Intermediate programming in Java or C/C++.

·       Some experience with shell usage in Unix/Linux/Windows with Cygwin/Mac OS X.

 

This summer course introduces the theory and practice of open source software development.

 

The theoretical part covers the foundational underpinnings through reading and analysis of key white papers, software licenses, documented development practices, and case studies of several important projects of different degrees of complexity. In the practical part, you will learn to use the "tools of the trade", in particular, source control, build automation, and patching. You will learn how to build open source projects, identify and implement fixes and improvements, and interact with project developers and committers.

Software engineering II: Global Software Engineering

Instructor: James Collofello, Arizona State University

Evaluation: final exam, project

Prerequisites:                        

·       Knowledge of the software development process, i.e. the requirements, design, coding and testing process. An undergraduate course in software engineering should provide the prerequisites for this course.

 

This course is designed for computer science or system engineering students interested in learning how to develop software in a global environment.  Global software development is a reality with multi-national companies producing software products with teams of software developers from around the world.  There are many challenges in planning and tracking these projects and organizing these developers into virtual work teams.

 

This self-contained course will provide an opportunity for students to work in teams to create software development, quality assurance and risk management plans for a global software development project. Specific topics to be addressed include:

 

·       Selection of a global software development process model including discussion of agile processes

·       Global software development risk management

·       Cost estimation including experience with software cost estimation models

·       Creating a software development schedule

·       Quality assurance plans for global software development teams

·       DAR (Decision Analysis Resolution) process for making key business decisions

·       Tracking progress approaches for global teams

·       Creating a virtual software development team

·       Acceptance testing

·       Managing an outsourcing activity

Artificial Intelligence I: Artificial Societies and Emergent Behavior

Instructor: Jon Pearce, San Jose State University

Evaluation: project, exam

Prerequisites:                        

·       No prior knowledge of Logo is assumed. Several other examples presented assume some knowledge of Java and UML, although most of the labs can be done using NetLogo, Java, C++, or C#.

 

What's beyond CORBA and SOA? This course will present an architecture for distributed applications viewed as artificial societies populated by autonomous, social, goal-driven agents. This type of architecture allows us to leverage the power of emergent behavior: complex behavior that spontaneously arises from the interactions between many simple agents. Applications (which students will build in class) include ubiquitous computing, grid computing, and modeling complex natural systems such as cultures, economies, eco-systems, and more.

This course will introduce students to NetLogo, a framework for creating artificial societies. NetLogo agents are programmed using a simple, powerful language called Logo.

Artificial Intelligence II: Machine Intelligence

Instructor: Andrés Perez-Uribe, HEIG-VD Switzerland

Evaluation: project, exam

Prerequisites:                        

·       Data structures and algorithms

·       Java or C

 

The idea of building machines with some sort of intelligence has been present at least since the ancient Greek mythology. With the advent of the computer, around 50 years ago, the Artificial Intelligence (AI) domain was born adopting a symbol manipulation approach that has enabled us to achieve great exploits like beating the best chess player in history. Nevertheless, most of us will agree that Deep-blue is not an intelligent machine. How then, are we going to build intelligent machines?

 

During this course we will move from the symbolic paradigm (so called Good Old-Fashioned AI) onto a connectionist paradigm, whereby parallel distributed processing models are implemented using neurally inspired systems (e.g., artificial neural networks), and then onto an embodied intelligence paradigm, where the emergence of intelligence is thought to be importantly driven by the interaction of the system (e.g., a robot) and its environment.

 

The course will consist of lectures and laboratory exercises, whereby the students will be able to use and understand the workings of relevant examples of the three mentioned AI paradigms.