SubjectsSubjects(version: 845)
Course, academic year 2018/2019
   Login via CAS
Principles of Computers - NSWI120
Title in English: Principy počítačů
Guaranteed by: Department of Distributed and Dependable Systems (32-KDSS)
Faculty: Faculty of Mathematics and Physics
Actual: from 2014 to 2018
Semester: winter
E-Credits: 3
Hours per week, examination: winter s.:3/0 Ex [hours/week]
Capacity: unlimited
Min. number of students: unlimited
State of the course: taught
Language: Czech, English
Teaching methods: full-time
Additional information:
Guarantor: Mgr. Pavel Ježek, Ph.D.
Class: Informatika Bc.
Classification: Informatics > Software Engineering
Is pre-requisite for: NSWI143
Annotation -
Last update: doc. RNDr. Pavel Töpfer, CSc. (27.05.2019)
The goal of the course is to introduce the basic principles of computer systems fro the developer point of view. The course covers topics in numeric data representation, computer architecture, intructions sets, communication with external devices and data storage technologies. Further, basic concepts of operatong systems are introduced, such as processes, threads, syscalls, memory and file management. The course also focuses on API provided by operating systems.
Literature -
Last update: doc. RNDr. Pavel Töpfer, CSc. (27.05.2019)

Patterson, D. A., Henessy, J. L. Computer Organization and Design: The Hardware/Software Interface. 4th edition, Morgan Kaufmann, 2008. ISBN 978-0123744937

Tannenbaum, A. Modern Operating Systems. 2nd edition, Prentice Hall, 2001. ISBN 978-0130313584

Syllabus -
Last update: doc. RNDr. Pavel Töpfer, CSc. (27.05.2019)
  • Data representation, integer arithmetic operations, floating point representation and arithmetics, range, accuracy and errors in floating point representation.
  • Instruction set architecture, CPU and its micro-architecture. Instructions and operands, memory addressing, load/store and memory-to-register architectures, instruction execution and control flow, implementation of subroutines, parameter passing, and local variables.
  • The hardware/software interface, interrupt handling, data transfers, bus interconnects, protocols, arbitration, contemporary bus technologies.
  • Memory technologies, volatile and persistent memory, memory hierarchy, fundamental metrics (latency, throughtput, capacity).
  • The role of the operating system, typical services provided by an OS, multi-user and multi-programming OS.
  • Software stack layers and abstractions, device and resource management, interrupt handling. User mode, kernel mode, mode transitions, system calls, API for user mode applications.
  • Processes, threads, context switching, multitasking, scheduling. Race conditions, critical sections, mutual exclusion. Fundamental synchronization tasks and primitives. Deadlock, conditions leading to deadlock, detection and prevention.
  • Memory management, virtualization by paging, page tables, page faults and page fault handling, page replacement policies and algorithsm.
  • Filesystems, file data and metadata, interface for accessing files and directories, fundamental on-disk data layouts.

Charles University | Information system of Charles University |