Next: Graduate Courses 1996-98
Up: Course Descriptions
Previous: Course Descriptions
Introduction to computers and data processing. Algorithms. Computer hardware.
Operating systems. Applications software. Programming languages. Database
systems. Communication networks. System analysis and design.
The course provides the student with the basic principles of programming:
algorithms, programming techniques, and object-orientation.
Java is the language used, but all of its features are not covered.
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.
Principles of relational databases, SQL, database programming, application
development, databases and the WWW, user interfaces, information system
development, object-oriented analysis, use case model, introduction to
database design.
The student designs, documents and programs a complete, realistic
program. In the course of the development she/he also gives small lectures
and demonstrations about the project.
Basic data structures. Applications to algorithms. Analysis of algorithms.
Implementations of data structures and algorithms. Memory
management.
Structure and implementation of concurrent and distributed systems.
The main emphasis is on solving problems in operating systems.
Databases and database management systems.
Relational databases, relational algebra and calculus.
File and index structures. Query processing. Transaction processing.
Relational database design, functional dependencies and normalization.
Object-oriented databases.
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.
A simulator or some other fairly large program is designed, programmed, tested
and documented.
A small ADP-system is designed and programmed.
A characterization of computer science, its problems, methods and applications
by selected examples and discussions. Models as tools. A learning model. Human
and scientific information processing: Perspectives on data, information,
coding and computing, perception and thinking. Algorithms, why and how.
L-systems as models. Iterated function systems. Discrete numerical computing.
Pictures and graphics. Individual work.
Fundamentals of declarative and symbolic programming. LISP and PROLOG basics.
Hands-on experimentations and implementations.
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.
Fundamentals of computer applications in education. The 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.
Axiomatic semantics of programs. Weakest precondition calculus for the guarded
command language of Dijkstra. Development of small programs based on the
programming logic.
The electrical interface. Data transmission. Data link control protocols. Local
area networks. High-speed and bridged local area networks. Wide area networks.
Internetworking. Transport protocols.
Language definition. Programming tools. General programming principles.
Abstract data types, class libraries, generic programming, object-oriented
programming.
Basic Ada data and control structures, packages, concurrency and
object-oriented programming. Applicability of Ada in the implementation of a
real-time system.
Introduction to software engineering as a professional discipline. Models of
software engineering. Team work. Project planning and organization.
Requirements analysis and engineering. Software design. Implementation
techniques. Testing. Debugging and maintenance. Software configuration
management. Software quality assurance.
Each student takes part in a project where a group of students analyzes the
requirements of a software product, designs, implements, and tests the product,
using systematic software engineering methods and tools. The group assignment
may also be focused on some sub-phase of the software life-cycle, such as
evolution or maintenance of an existing software system.
Principles of the UNIX environment for end users, includes principles of file
system, shell, wildcards, protection, I/O, text editing, regular expressions,
sorting and searching, awk, program development, project maintenance, and
networking commands.
The programming interface to the UNIX system: system calls and library functions
for process control, memory management, file systems and peripherals,
tools for interprocess communication.
Internet networking services provided to application programs and
TCP/IP protocols, including design and implementation
principles of these protocols. The focus is on practical aspects of
designing and implementing distributed applications using these protocols.
Basics of wireless data communication. GSM, wireless LANs,
cellular telephone networks, packet radio networks, wireless LANs,
satellites and UMTS.
Basics of digital signal processing. Applications, especially in the area of
biological sciences.
Metadata. Data presentation and storage: files,
trees, databases. Statistical packages. Explorative data analysis.
Sampling. Bootstrapping and randomization. Data visualization.
HTML and WWW techniques, document preparation and electronic publishing.
Sources of scientific information. Use of libraries and scientific data bases.
The structure and details of a scientific publication. Examples of scientific
Finnish or Swedish. Three individual survey writing exercises.
In tutoring the second year students are divided
into groups of ca. 15 students. Each group is led by a teacher or
researcher (tutor) and the group meets monthly during two academic
years. In the meetings students introduce matters related to their studies for
discussion. In addition each student meets regularly with his/her tutor for
private discussions to solve problems in his/her studies. The objective of
tutoring is to reduce the number of student dropping out, uncover
bottlenecks in the studies, and improve the relationships between students
and teachers.
Next: Graduate Courses 1996-98
Up: Course Descriptions
Previous: Course Descriptions