Course descriptions

Bioinformatics: Introduction to bioinformatics

Instructor: Sami Khuri, San José State University

Evaluation: final exam, homework, exercises


ˇ         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:


Web technologies I: Rich Internet Applications with Adobe Flex 2

Instructor: Natasha Khuri, San José State University

Evaluation: final exam, homework, exercises


ˇ         Some familiarity with object-oriented programming languages such as Java or C++ and XML technology.


One of the popular technologies for RIAs is Adobe Flex, which is now at version 3.0. Adobe Flex is popular among the web developers because of its power, cross-platform support and appeal it can bring to a RIA. In addition, it has an easy to learn programming model and the Flex development tool.

This course will cover the major facets of Adobe Flex. Students will learn how to develop RIAs with rich user interface using powerful Abode Flex UI widgets and their extensibility. Students will also learn events handling, data binding, using containers to structure the user interface. The course is taught in a lab, where students can practice with the tools and develop their own projects.



  • Web 2.0 and RIA overview
  • Introduction to Adobe Flex
  • Getting started with Flex Builder
  • Flex user interface controls and application navigation
  • Handling Events
  • Using containers to structure the user interface
  • Display data in table format using DataGrid
  • Data binding
  • Sending and retrieving data with HTTPService


Web technologies II: Service-Oriented Computing and Web Services

Instructor: Yinong Chen, Arizona State University

Evaluation: final exam, project


ˇ         Object-oriented programming in C++, Java, or C#.


This course teaches the principles in service-oriented computing and applies the latest technologies to develop service-oriented software. By the end of the course, students will be able to develop web applications such an online store.


Topics to be covered include service-oriented architecture; service-oriented computing paradigm, web services, XML processing, service hosting, service registry and repository, service composition, mashup, Web 2.0, Web 3.0, and application building based on existing services from service providers such as Amazon, Google, and Microsoft. The application building includes software development on both client and server sides.


Textbook: Y. Chen, W.T. Tsai, Distributed Service-Oriented Software Development, Kendall/Hunt Publishing, 2008.

Related information can be found at:


Web technologies III: Web technologies

Instructor: Alvaro Monge, California State University Long Beach

Evaluation: homework, quizzes, project


ˇ         At least one year of programming (C++, Java)

ˇ         Knowledge of data modeling and database fundamentals (SQL)


This course will study client as well as server Web technologies. On the client side, we will focus on DOM, XHTML, Javascript, and CSS.  On the server, we will learn some basic PHP programming to generate dynamic content.  Much of the focus of the class will be on generating web pages that follow the standards set out by the W3C (World Wide Web Consortium). Special focus will be given to Web accessibility. Some historical aspects of the web will be included throughout the course. On the server side, we'll learn about maintaining session state across page requests.


Software engineering I: Open-Source Software Development

Instructor: Cay Horstmann, San Jose State University

Evaluation: final exam, project


ˇ         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


ˇ         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


Security I: Computer and Network Security

Instructor: Partha Dasgupta, Arizona State University

Evaluation: final exam, lab assignments


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


Security II: Wireless Network Security

Instructor: Abraham Rubinstein, HEIG-VD Switzerland

Evaluation: final exam, lab assignments


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


Security III: Web Application Vulnerabilities

Instructor: Christian Buchs, HEIG-VD Switzerland



ˇ         Basic notions in web application development (java, SQL, HTTP)

ˇ         A short recap of the necessary notions will be proposed before each lab.


Major web application vulnerabilities will be presented and tested in a deliberately insecure J2EE web application. During the labs, students will demonstrate their understanding of chosen security issues by exploiting real vulnerabilities in the WebGoat application (from the OWASP project).