Course Description

Being, by its nature, an open system with freeware open source, Linux Operating System has de facto laid the foundation of the computing infrastructure in the majority of universities and computing laboratories around the world. Its implementation does not presuppose any license fees. That is why being able to work under Linux becomes a must for a modern scientist, which allows him or her to get competitive edge on the job market. In the given practical special course we address user techniques for working with Linux OS; we study the interface of the command line in great detail, methods of automation and batch processing, composition of scientific articles as well as the specifics of software design by using in-built toolkit. Moreover, we analyze the system of cross-platform object-oriented programming of the QT graphic interface, and we also offer a short introduction to mathematical modeling and ‘matlab.’ math package and Latex publishing package.

Introduction

The first version of the nucleus of Linux operating system was written more than 20 years ago by a student, just like you, as his second-year coursework. By the time this student, whose name is Linus Torvalds, graduated from the University of Helsinki, practically every leading hardware and software manufacturers had announced their support of this OS. Nowadays Linux is the main platform for scientific computing, commercial server applications, mobile devices, on-line embedded systems; Linux OS is also used a standard base for various industries such as 3D animation, oil exploration and a classroom at school or university.

The reasons of this impressive success are not only the fact that the OS follows internationally accepted standards in the sphere of software (POSIX), or that it strives for maximum compatibility with the existing hardware and software, but also the fact that its development process is unprecedentedly open. From the first announcement about the creation of the new operating system and till the present moment anyone can take part in its development and testing, and the result of this work will be visible to other developers and users. Thus, at the present moment Linux OS supports a record amount of the hardware architectures, devices and file systems, and it is considered the main platform for testing and implementing latest innovations in the field of IT.

Acquired knowledge and skills

By the end of the course students is to acquire necessary skills to work under Linux OS, get to know the interface of the command line in Linux, learn to use in-built software for software development and learn to write programmes with graphic interface for successful completion of the course project.

Educational technologies

The given course also has an electronic version for presentation. Lectures are supplemented with the modern multimedia and projection equipment. Practical classes take place in the computer classes.

Software

  • OS Linux, gcc 4.3 and higher.

Assessment

  • Midterm assessment takes place during the 8th week and is based on student’s current academic progress. Assessment criteria are completed practical tasks, reports and library-research papers.
  • There is also weekly assessment, which criteria are attendance, participation during the class, level of preparation for the seminars, home assignments.

Программа курса

3rd semester:

  • Design and architecture of Linux OS
  • Use of console interface of the command line, automation (bash scripts)
  • Basic commands and utilities of the command line (including grep, sed, awk, ImageMagik, etc.)
  • Console word processor (vi, Emacs)
  • Operating a remote system (ssh, X11, VNC)
  • Console and graphic development tools on C/C++ (gcc, make, cmake, gdb, ddd, eclipse, QTCreator)

4th semester:

  • QT library for cross-platform application with rich graphic interface;
  • Multithread and network programming using QT
  • Basics of computer-assisted physics (mathematic modeling, data analysis of an experiment, etc.)
  • Application package of mathematic modeling (octave, matlab)
  • Application mathematic libraries C++ (Eigen), basics of parallel programming (OpenMP)

This special course does not teach the skills of system administration, nor does it specialize in any software distribution in particular.

References

  • Kernighan, Brian W.Pike, Rob. (1984) The UNIX programming environment /Englewood Cliffs, N.J.: Prentice-Hall
  • Robachevsky, А.М. Unix Operating System, 2nd Ed. Saint Petersburg: BXV-Petersburg, 2010.
  • Barrett, Daniel J., Linux Pocket Guide, 2004.
  • Sekunov N. Programming on C++ in Linux. Saint Petersburg: BXV-Petersburg, 2004.
  • Chebotaryov, A. V. Qt4 Library. API Design in Linux. Williams, Dialektika, 2006.