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