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. 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. |