Computer Science at the University of Helsinki 1994

3.2. Course descriptions

a) Undergraduate courses

Fundamentals of ADP (2 cu)
Introduction to computers and data processing. Algorithm. Computer hardware. Operating systems. Applications software. Programming languages. Database systems. Communication networks. System analysis and design.
Programming (Pascal) (4 cu)
The course provides the student with the knowledge of the principles of an algorithmic language. The student will be able to program in Pascal and implement those programs in a microcomputer environment.
Programming (Fortran) (3 cu)
The course provides the student with the knowledge of the principles of an algorithmic language. The student will be able to program in Fortran and implement those programs in a computer environment.
Computer Systems Organization (5 cu)
Introduction. Data presentation, error detection and correction. Computer organization. Conventional machine level. Assembly language. Compilation, linking, loading. Input/Output. Secondary storage. Operating system. Data communication equipment and software.
Information systems (4 cu)
Data systems and systems development. Data flow techniques. Conceptual Modelling. Transaction Analysis. Data base design. Relational data model. SQL. User Interfaces. CASE tools.
Programming Project (2 cu)
The student designs, documents and programs a complete, nearly realistic program. In the course of the development she/he also gives small lectures and demonstrations about the project.
Data Structures (5 cu)
Basic data structures. Applications to algorithms. Analysis of algorithms. Implementations of data structures and algorithms in Pascal. Memory management.
Operating Systems (5 cu)
Operating system concepts. Processes. Input/Output. Memory management. File systems.
Database Systems I (5 cu)
Databases and database management systems. Entity-relationship model. Relational data model and relational algebra. SQL language. Relational calculus. QUEL and QBE languages. Hierarchical and network data models. Functional dependencies and normalization. Database design. Transaction processing.
Theory of Computation (5 cu)
Finite automata and regular languages. Context-free grammars and languages. Rudiments of parsing theory and attribute grammars. Context-sensitive and type-0 grammars. Turing machines. Recursive and recursively enumerable sets. Computability and computational complexity.
Data Structures Project (3 cu)
A simulator or some other rather large program is designed, programmed, tested and documented in a mainframe environment.
Information Systems Project (2 cu)
A small ADP-system is designed and programmed either in a microcomputer or in a mainframe environment.
Artificial Intelligence (4 cu)
A general view of the potential of AI in various kinds of problem solving is given. Main results in AI research and applications are represented. Also basic ability to construct AI based software is provided. The course consists of an overview of AI, LISP, knowledge representation, constraint propagation, exploring alternatives, problem solving, language understanding, image understanding and learning.
Computer Graphics (4 cu)
Overview of graphics systems. Output primitives and their attributes. Two-dimensional transformations. Windowing and clipping. Segments. Interactive input methods. Three-dimensional concepts, representations, transformations, viewing. Hidden-surface and hidden-line removal. Shading and color models. Modeling methods. Design of the user interface. Individual practical work.
Computer Uses in Education (4 cu)
Fundamentals of computer applications in education. Computer as a tutor, tool, and tutee. Computer assisted instruction (CAI) systems. Courseware design, development, and evaluation. Authoring systems and languages. Multimedia CAI. Intelligent CAI. Applications and research. Practical courseware designing in small groups. Principles of Programming Languages (4 cu) History. Basic concepts of Ada. Type systems (Algol68, Pascal, Ada). Blocks, subroutines and parameter passing. Modules (Clu, Modula-2, Euclid, Ada). Classes and objects (Simula, C++, Smalltalk, Oberon). Exception handling (PL/I, Clu, Ada). Concurrency (Concurrent Pascal, Ada). Generics. Programming environments.
Data Communications (4 cu)
Data transmission. Data encoding. Digital data communication techniques. Data link control. Multiplexing. Data communication networking techniques. Circuit switching. Packet switching. Radio and satellite networks. Local area networks. Computer communications architecture. Network access protocols. Internetworking. Transport protocols. Integrated services digital network.
Programming in C (2 cu)
Definition of ANSI-C. The UNIX system interface. Programming utilities and libraries. General programming principles. Maintaining program groups. Programming in the large.
UNIX Platform (2 cu)
Insight of a UNIX system for programmers: processes, file systems, peripherals, tools for interprocess communication.
UNIX Networking (4 cu)
Data communication protocols typically used in a UNIX environment are discussed including networking services provided to application programs, as well as design and implementation principles of these protocols. The focus is in the practical aspects of designing and implementing distributed applications using these protocols.
Window Systems (2 cu)
Open Look. Xview. X. CUA.
Implementation of Database Applications (4 cu)
Course introduces students to the principles and practice of implementation of database applications using application development systems and embedded database languages. During the course students implement a small application.
Social Role of Automatic Data Processing (2 cu)
Information society. Information technology policy of Finland. Economic effects. Effects on employment. Quality of work. Educational impacts. Privacy legislation and other juridical issues. Effects of new telecommunication services.
Scientific Writing (4 cu)
Sources of scientific information. Use of libraries and scientific data bases. The structure and details of a scientific publication. Examples of scientific Finnish. Three individual survey writing exercises.

b) Graduate courses

Design and Analysis of Algorithms (5 cu)
Analysis techniques. Design techniques. Models of computation and lower bounds. Algorithms on sets. Graph algorithms. Approximation algorithms for NP-complete problems. Probabilistic algorithms. Parallel algorithms.
Compiler Construction (5 cu)
Examples of industrial compiler projects. Introduction to compiling. Lexical analysis: regular expressions, scanning. Syntax analysis: context-free grammars, recursive descent parsing, parsing conflicts and their solving. Semantic analysis: symbol tables, attribute grammars. Code generation: intermediate languages, optimization.
Database Systems II (5 cu)
Physical data organization in databases. Sequential, hashed and indexed file structures. Secondary indices. Query processing and optimization for relational database systems. Join algorithms. Hypergraphs. Semijoin programs. Logic query processing. Datalog data model. Naive and seminaive evaluation of least fixed points. Optimization by magic sets.
String processing algorithms (5 cu)
Exact string matching. Approximate string matching. Pattern matching in static strings. Text databases and hypertext. Algorithm implementation and comparison project.
Machine learning (4 cu)
Inductive inference. Concept learning. Computational complexity of learning. Learning in uncountable domains. Learning functions. Learning finite automata. Learning by neural networks.
Computational complexity theory (3 cu)
Review of Turing machines and complexity classes. Space complexity. Alternating Turing machines and the polynomial time hierarchy. Oracle Turing machines and relativization. Structure theorems for NP-complete sets. Structure within NP. Probabilistic Turing machines and complexity. Nonuniform complexity measures. Kolmogorov complexity.
Advanced Computer Graphics (4 cu)
Selection of advanced topics such as tray tracing, radiosity, solid modeling, illumination and color, scientific visualization, etc. are taken as a theme of the course. Individual and group work, report writing and oral presentations by the participants.
Neural Networks (3cu)
The emphasis of the course is on providing students with an intuitive understanding of the common neural network models and the related algorithms. The course contents include discussion on the principles of neural computing and some application areas, followed by a more detailed discussion on the basic network models such as feedforward networks and self-organizing maps. The course has several implementation projects and hands-on experiments on various simulator software packages.
Logic Programming (4 cu)
Introduction to logic programming and Prolog. Abstract and Prolog interpreter. Unification. Semantics of logic programs. Backtracking, cut, negation. Concurrent languages. General programming techniques. Meta-interpreters. Definite clause grammars.
Semantics of Programs (3 cu)
Axiomatic semantics of programs. Weakest precondition calculus for the guarded command language of Dijkstra.
Distributed Operating Systems (5 cu)
Interprocess communication, naming facility, process management, resource allocation, file service, ODP standardization.
Performance Analysis (4 cu)
Measuring techniques. Workload modelling. Simulation methods. Queueing models. Queueing network models. Case studies.
Computer Networks (5 cu)
Specification and analysis of communication protocols in an extended state transition model. OSI upper layer protocols. Security in computer networks.
Concurrency Theory (4 cu)
Process algebra (Milner's CCS) and temporal logic with applications to distributed systems, process equivalences.
Simulation (4 cu)
Modelling and simulation. Data collection and analysis. Random numbers and random-variate generation. Model verification and validation. Output analysis. Experimentation and optimization.
Principles of Software Engineering ( 4 cu)
Software engineering as a process. Software process evaluation. Software quality assurance, measurement and evaluation. Software quality factors: correctness, testability, reliability, performance, security, safety, changeability, reusability, portability, usability.
Principles of Concurrent Programming (3 cu)
Basic abstractions in concurrent programming, distributed algorithms, Ada-rendezvous, implementation issues.
Computer Architecture (4 cu)
Basics of computer architecture from instruction set design to I/O subsystems. The emphasis is on uniprocessor systems but parallel and distributed architectures are also discussed.
Object-Oriented Programming (4 cu)
Introduction to basic concepts: object philosophy, object, class, inheritance, and polymorphism. Principles of object-oriented programming: data abstraction, encapsulation, information hiding, representation independence, subclass, super class, abstract class, static and dynamic binding; values vs. objects. History and development: the first object-oriented language Simula, Smalltalk approach: message, method, and protocol. Object-oriented software construction: object-oriented analysis and design; building abstraction hierarchies. Object-oriented programming in C++: classes as types, protection levels, object construction and desctruction, templates, exceptions; examples; C++ vs. ANSI C. Comparison of object-oriented languages: concepts and terms; classes vs. modules.
Relational database design (3 cu)
ER model and relational model. Object-oriented models. Integrity constraints and dependencies. Goals of database design. Axiomatizations of functional and inclusion dependencies. Algorithms for manipulating integrity constraints. Transformations between models. Database design by using examples. Generation of example databases. Dependency inference. Performance issues.
Transaction processing (4 cu)
Serializability theory. Locking and non-locking schedulers. Multiversion concurrency control. Centralized and distributed recovery. Management of replicated data. Multidatabase transaction management. Cooperative transaction management. Prototype systems.
User Interfaces (4 cu)
Psychological foundations. Types of users, user modelling. Design guidelines. Basic interaction styles and techniques. User support. Formal description of interaction. Interfaces to database systems. Hypertext. Multi-user interfaces.
Computer-Supported Cooperative Work (3 cu)
Concepts and history of CSCW. Meeting and decision support. Multi-user interfaces. Groupware. Social and organizational aspects.
Knowledge bases (3 cu)
Knowledge representation. Advanced data models and new database systems, including rule-based, object-oriented, and structured text databases. Knowledge-base systems.
Object-Oriented Databases (3 cu)
New applications areas for databases. Object-oriented data models. Example systems. Query languages. Implementation principles. Query optimization. Clustering.
Project work (10 cu)
Requirements analysis. Design. Implementation techniques. Quality assurance. Project management. Each student takes part in a software project, where a group of students analyzes the requirements for a software product, designs and implements the product, using systematic software engineering methods.

c) Seminar Courses in 1991-93

  • Algebraic Specification
  • Analysis of Algorithms
  • Bioinformatics
  • Computational Geometry
  • Computer Uses in Education
  • Image Processing Methods
  • Knowledge Engineering
  • Machine Learning
  • Research Seminar on Neural Computation
  • Scientific Visualization
  • History of Computing
  • Distributed Systems
  • Fault-tolerant Systems
  • Formal Specification of Distributed Systems
  • Managing the Software Process
  • Mobile Workstation Architecture
  • Object-Oriented Analysis and Design
  • ODP Reference Model
  • Paradigms in Programming
  • Performance Analysis of Database Applications
  • Performance of Database Systems
  • Performance of Transaction Processing Systems
  • Quality Factors in Software Engineering
  • Research Seminar on Computer Networks
  • Research Seminar on Object-Oriented Programming
  • Software Engineering Methodologies
  • Software Reliability Analysis
  • Software Reuse
  • Software Specification Methodologies
  • Thesis Seminar (Distributed Systems)
  • Database Structures
  • Hypertext Systems
  • Logic Databases (I and II)
  • Research Seminar on Databases
  • Research Seminar on User Interfaces
  • Thesis Seminar Information Systems