Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Master of Science in Applied Informatics Applied Informatics The Master of Science in Applied Informatics is jointly offered by the Faculty of Informatics of the Università della Svizzera italiana and the Department of Innovative Technologies of the University of Applied Sciences of Southern Switzerland. Goals and Contents The Master of Science in Applied Informatics provides students with an in-depth perspective on advanced topics of computer systems. The Master combines the study of fundamental aspects of computer systems with a hands-on approach, preparing professionals for successfully pursuing a career in research and development. The programme allows students to deepen their knowledge in many directions: students learn how to analyse, select and evaluate computer programmes with the help of a strong theoretical background, which includes notion of computational complexity and formal methods like abstract algebra and logic. In parallel they acquire abilities to understand, design, simulate and optimise intelligent and complex systems where important competences include the capability to learn and to adapt to unpredictable and dynamic situations. Students learn how to design, test and analyse software programmes providing the required level of software quality using the appropriate software engineering 148 methodologies. Fundamental aspects of students’ knowledge include the capability to design and use advanced data management systems, to operate modern operating systems and to use advanced concepts of modern programming languages. During the final year, in parallel with their thesis, students acquire skills in business and management where they understand organisational structures and learn how to manage projects and teams. Students graduating from this programme develop the ability to work on applied problems. In their future careers they will use their knowledge in interdisciplinary areas with enhanced analytical and technical skills and with the ability to develop sophisticated solutions and to manage teams of people in challenging tasks. Teaching Teaching emphasises close contact between students and staff. Professors are pursuing research on a variety of topics and are active participants in Swiss and international research projects and networks. Visiting professors from renowned universities complement the top-quality teaching. Organisation The programme stretches over three semesters (90 ECTS credits). Typically, in the first semester students attend classes in order to acquire the basic knowledge. The second semester is dedicated to core courses. Students are required to take core courses that regard specific applied informatics topics and methodology. The third semester is dedicated to the Master’s project and to acquire basic knowledge in business and management. 149 Master of Science in Applied Informatics 6 6 6 6 6 Core Courses (24 ECTS) Computer Systems Modelling, Simulation and Optimisation Software Quality Advanced Data Management Systems 6 6 6 6 3 3 Sem. 2 Basic Courses (30 ECTS) Algorithms and Complexity Intelligent Systems Software Engineering Programming Languages Combinatorics Laboratories (6 ECTS) Computer Systems Lab Modelling, Simulation and Optimisation Lab Sem. 3 Sem. 1 Study Programme* Business and Management Project 6 24 Total ECTS 90 * Slight changes in the study programme may occur. Master of Science in Applied Informatics Course Descriptions Basic Courses Algorithms and Complexity Algorithms are fundamental to computer science and software engineering. An important part of computing is the ability to select algorithms appropriate to particular purposes and to apply them, or recognizing the possibility that no suitable algorithm may exist. Efficiency is a pervasive theme throughout this area. The goal of this course is to develop algorithm design techniques by drawing on problems from across many areas of computer science and related fields (systems and network, computer vision, operations research, computational biology, data mining, etc…). The notion of computational intractability, and NP-completeness in particular, plays an important role. Some of the time, an interesting problem arising in an application area will be amenable to an efficient solution, and some of the time it will be provably NP-complete; in order to fully address a new algorithmic problem, one should be able to explore both of these options with equal familiarity. The discovery that a problem is NP-complete should not be taken as the end of the story, but as an invitation to begin looking for approximation algorithms, heuristic local search techniques, or tractable special cases. We include extensive coverage of these approaches. Contents: Analysis of algorithms. Algorithm design for tractable problems: maximum-flow, linear programming. Survey of NP-complete problems, reductions. Approximation algorithm design for intractable problems: approximation algorithms 150 with provable bounds, local search, randomized algorithms. Applications: scheduling, bin-packing, minimum spanning tree, bipartite matching, clustering, vertex cover, traveling salesman, Steiner trees, etc… Intelligent Systems Intelligent Systems solutions arise in a wide range of modern applications: web search, robotics & embedded computing, pattern recognition, scientific computing, scheduling, optimisation, game playing, etc. In the theoretical part of this course, foundations of machine learning and computational intelligence will be covered. In the practically oriented part examples of learning systems will be covered. Contents: Elements of statistical machine learning; probabilistic data models and maximum likelihood estimate; neural networks; decision trees; support vector machines; reinforcement learning; unsupervised learning techniques; evolutionary computation. This course will provide the basis for designing intelligent systems and understanding their behavior. Software Engineering Software engineering is the discipline of building software in a methodical way to ensure that the software satisfies its users’ needs and is maintainable. This class teaches the student to analyze and document user requirements and gives an overview of the software engineering tools, techniques, and processes. Contents: Historical Background and Economics; Types of Software; Software Process; Software Requirements; Modeling Master of Science in Applied Informatics and Specification; Architecture and Design; Validation and Verification; Maintenance and Evolution; Development Methodologies; Software Tools and Environments; Componentbased Development; Test-Driven Development; Open-source Development; Software Configuration Management; Software Quality; Software Cost Estimation; Software Teams; Project Management. Programming Languages Alan Perlis observed in 1969: “A good programming language is a conceptual universe for thinking about programming.” Programming languages provide the abstractions, organizing principles, and control structures that programmers use to write good programmes. This course will give students a detailed and in-depth understanding of modern programming languages. It will show the motivation behind language designs, the strengths and weaknesses of different language designs, and specific implementation issues. Studying these issues will enable students to (1) make the most effective use of language features in the languages they already use, (2) learn new languages with relative ease, and (3) evaluate the suitability of a language for a given task. Case studies from a wide variety of languages, including both languages in common use and languages that are research prototypes will be used. The course covers the semantic foundations and paradigms of modern programming languages. The concepts covered include type systems, polymorphism, type inference, closures, exceptions, continuations, garbage collection, and new trends in programming languages. The course will present the material at three levels. It will (1) introduce the above 151 fundamental concepts, (2) discuss how these concepts appear in languages such as Java, Ada, SML, Smalltalk, and C++, and (3) discuss the implications of how languages implement these concepts for compilers and run-time systems. Combinatorics This is an introduction to combinatorics, a branch of mathematics with important connections to computer science, probability, statistics and algebra. Historically, its roots are in recreational mathematical puzzles and games. Combinatorics is generally concerned with two types of questions: 1) does a particular kind of arrangement or pattern exist?, and if so 2) how many ways can it be made? Often the answer to these questions require studying the structures and properties of the desired arrangement, and a goal is typically to find an optimal one in some prescribed sense. In short, combinatorics is concerned with the existence, enumeration, analysis and optimization of discrete structures. This course will involve lots of problem solving, and it will also involve the reading and writing of mathematically precise proofs. In fact, even more than mastering the course content, the development of these skills is the primary goal of the course. Contents: Numbers and counting, partitions and permutations, graphs, trees, the pigeonhole principle, the inclusion-exclusion principle, systems of distinct representatives, latin squares, graph coloring, Ramsey theory, posets, chains and antichains, the probabilistic proof method, extremal combinatorics, permanents, generating functions, Polya counting. Master of Science in Applied Informatics Core Courses Computer Systems The goal of this course is to expose students to important topics related to computer systems. The course will cover a broad range of advanced computer systems and provide students with different perspectives on key concepts. It will survey operating systems, database systems, and internet infrastructure systems. The course contents include: Threads and scheduling; Transaction isolation concepts; Concurrency control techniques; Volatile memory (e.g., virtual memory, in-memory database systems, transactional memory); Storage management (e.g., storage technologies, file systems); Case studies (e.g., UNIX, Mach, System R, Berkeley DB). Computer Systems Lab In this course, students will develop a systems project, which may include, for example, understanding part of an OS, a DBMS, or a middleware service; extending one of these systems; or analyzing their performance. This course complements the Computer Systems course and gives students the opportunity to understand the implications of some techniques through a hands-on approach. Modelling, Simulation and Optimisation Modelling, simulation and optimisation are fundamental to solving problems in a number of fields of science, technology and life. Students will learn to design, implement, simulate, and optimise models of dynamic systems. Simulation, the exploration of 152 dynamic behavior of models in time and space, is discussed for both continuous and discrete-event systems. Simulating a model allows the evaluation of indicators of the performance of the modelled system, improving our understanding of its behavior and dynamic complexity. Optimisation techniques allow exploring the space of the system trajectories generated by simulation in order to find the best way of managing the system under study. Contents The system dynamics approach to modelling: causal-loop diagrams and stocks and flows. Introduction to systems: definition and properties, linear systems, equilibria and stability. Simulation of continuous systems, validation and sensitivity. Control and optimisation of continuous systems. Notes on stochastic modelling: Markov chains and queuing networks. Discrete event systems: simulation, input and output data analysis, experimental design and the response surface methodology; optimisation via simulation; verification validation and testing. Modelling, Simulation and Optimisation Lab The modelling, simulation and optimisation lab is a set of experimental lectures during which the concepts introduced in the course are further developed and put into practice. Examples and small experiments will also be presented during the course lectures, but in the lab the students will have more time to "get their hands dirty" and to solve more complex problems. Two software tools will be presented and used for the lab courses: MATLAB, a multi-purpose numerical computing environment, and AnyLogic, a multi-method simulation platform Master of Science in Applied Informatics that incorporates state-based, dynamic and agent-based simulation methods. During the lab courses, the software tools will be presented, and students will use them for solving exercises to in order to become comfortable with them and the underlying mathematics. A set of different modelling assignments will be solved during the lab courses, during which students will build real-world models of different types (causal loop diagrams, -system dynamics models, discrete event simulations). Software Quality The main goal of this course is to understand and master the different aspect of software quality. Students will learn quality goals and tradeoff, different testing and analysis techniques, and how to plan and monitor the quality process. The course assumes basic knowledge of software test and analysis problems and techniques, classic functional testing techniques, classic structural testing techniques, inspection techniques, and classic testing tools. The course presents a detailed framework of software quality, describes core techniques, discusses problems and solutions, and provides a detailed description of the software quality process. Contents: Quality activities, tradeoff and limitations; Basic principles; Finite models; Dependence and data flow models; Symbolic execution and proof of properties; Finite state verification; Data flow testing; Model based testing; Testing object oriented software; Fault based testing; Test execution (scaffolding and oracles); Programme analysis; Planning and monitoring the quality process; Integration and component-based software 153 testing; Acceptance and System testing; Regression testing; Documentation and standards; Test automation. Advanced Data Management Systems The objectives of the course are: Design database systems based on different data models and technologies; Understand and design data warehouse architectures; Design and develop data infrastructure for Business Intelligence applications; Acquire design methodologies based on different data models paradigm. Learn data analysis and data mining techniques. The course includes the following topics: Object databases; Object relational databases; XML and databases; Design and implementation of Data warehouses; Data Mining; New paradigms in database design and development; Infrastructure for high availability data systems. Business and Management The class has two separate but connected parts where the aim of the first part, understanding organisations, is to provide an overview of organisations from the interaction of people and groups to a more macro understanding of the role and function of organisations. The second part introduces participants to the organisation and structure of project magement as well as the methods and tools used to create, monitor and evaluate them. Contents: Principles of organisational behaviour; Individuals and organisations; The working and function of groups; Organisational structures; The role of organisations; Functions of organisations; The organisation, stages and processes of 154 Master of Science in Applied Informatics a project; Tools and techniques for managing project teams; Organisational Breakdown Structure and Work Breakdown Structure; Standard tools for project management; Project evaluation; PERT (Programme Evaluation and Review Technique)/ CPM (Critical Path Method); Critical Chain Planning; Project deliverables; Project monitoring and change; Risk management. Project The Master’s project is an academic piece of work, an original contribution to the body of applied informatics. Such a contribution can be theoretical or experimental, but always builds on a solid research effort, and on the use of appropriate concepts, methods, and tools acquired during the programme. Faculty members support and coach the participants during their work with the Master’s project. This can be started during the second semester, and should be completed by the end of the third semester of the programme. The project may be done in collaboration with an industrial company. General Information Language This programme is entirely held in English. Admission Requirements The formal requirement for admission is a Bachelor’s degree (or equivalent) from a recognised academic institution in Computer Science, Mathematics, Physics, Electrical Engineering, or related disciplines. Students with a Bachelor degree of a Swiss university of applied science are admitted without debits if the final grade is within A and B. Good knowledge of English is required. Contacts Università della Svizzera italiana, USI Study Advisory Service Tel. +41 58 666 4795 [email protected] For further information: www.mapi.unisi.ch