Module “Computer Science”
Agent-Based systems
An agent-based system is an artificial society populated by artificial beings called agents. Agent-based modeling is the application of agent-based systems to modeling emergent behaviors in nature such as the spread of disease, the distribution of wealth, voting patterns, biological/social evolution, crystallization, bird flocking, traffic jams, ant hills, etc. These models allow us to understand and predict the behavior of systems that are too complex to be analyzed by traditional mathematical equations. SimAgent, NetLogo, and Swarm are some popular frameworks for agent-based modeling.
Beyond modeling, agent-based systems provide a foundation for many application areas including grid computing, ubiquitous computing, gaming, and service-oriented computing.
In this course we will demonstrate agent-based modeling using NetLogo. The FIPA standard will be introduced in parallel with the JADE platform. Several domain models will be presented using Agent-UML. Some of the applications mentioned above will be discussed.
Topics in Object Oriented Modeling
This course covers Agile Model-Driven Development, Enterprise Architecture Patterns, and Software Entropy and Refactoring.
Agile Model-Driven Development
Extreme Programming is perhaps the most famous example of an agile methodology. But some software engineers are uncomfortable with the idea of abandoning design altogether. In Agile Model-Driven Development design models only need to be barely good enough to advance the project to its next release.
Enterprise Architecture Patterns
The traditional Three-Tier Architecture is used as an organizational framework for introducing and discussing design patterns that are commonly found in enterprise applications.
Software Entropy and Refactoring
Software entropy is the tendency of a software system to lose design integrity over time. Some of the ways this can happen are well known and are described in anti-pattern catalogs. Techniques for restoring design integrity by breaking anti-patterns are also well known and are described in refactoring catalogs. In addition, tools exist that will automatically apply these refactoring techniques.
Ubiquitous computing
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).
Evolutionary algorithms
The course will introduce one of the evolutionary computation techniques: the genetic algorithm. The methodology of genetic algorithms will be described and the course will demonstrate various applications of these algorithms. More precisely, it will show how these probabilistic search algorithms, modeled after organic evolution, can be used to obtain good solutions when applied to combinatorial optimization problems, such as the maximum-cut, the minimum tardy task, the set covering, the terminal assignment, scheduling problems and graph coloring problems. The course will then explore the application of genetic algorithms to the problems of multiple sequence alignment and DNA fragment assembly.
Development of data centric J2EE Web Applications
This course covers in more detail the enterprise architecture pattern. In particular, students will learn the design of J2EE web applications using the Model-View-Controller architectural design pattern, the Front Controller pattern, and the DAO (Data Access Object) pattern. The driving goal will be to develop applications where the user interface is clearly separated from the business model and the business model is independent from the database. This will be achieved in the context of building a J2EE web application using open source technology.
Module “Networking”
Grid computing
Description
Distributed computing
With the growth of Internet and intranet applications more and more people are engaged in net-centric computing either at the workplace or on their own. Distributed Computing deals with programming paradigms, application program interfaces (API's) or toolkits, and protocols and standards in the context of net-centric computing. We will first discuss the basics of interprocess Communication and the fundamental Distributed Computing paradigms. We will then explore some of these paradigms in more detail using the Java programming language.
Malware analysis
After a short recap on the different types of malware (virus, worm, backdoor, etc.), we will discuss how to analyze them. A generic method and infrastructure will be exposed, along with a set of appropriate network and system forensics tools.
The first lab will allow the students to apply this knowledge to real malware (Sasser, Back Orifice and Vanquish). In the second lab, an unknown (unnamed) malware will be given to the students who will have to investigate and analyze it to determine its characteristics (type, damages, behaviour, etc.).
Wireless Network Security
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.