• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Computer Architecture and Operating Systems

2020/2021
Academic Year
ENG
Instruction in English
6
ECTS credits
Course type:
Compulsory course
When:
2 year, 3, 4 module

Instructor

Course Syllabus

Abstract

The training course “Computer Architecture and Operating Systems” is offered to students of Bachelor Program “HSE and University of London Double Degree Programme in Data Science and Business Analytics” (area code 01.03.02) at the Faculty of Computer Science of the National Research University — Higher School of Economics (HSE). The course is classified as a compulsory subject; it is a two-module course (semester B quartiles 3 and 4). The course is divided into two logical parts. The part is given during semester B quartile 3 and is dedicated to computer architecture and assembly programming. The second part is given during semester B quartile 4 and covers operating system organisation and system programming. The syllabus is prepared for teachers responsible for the course (closely related disciplines), teaching assistants, students enrolled in the course as well as experts and statutory bodies carrying out assigned or regular accreditations.
Learning Objectives

Learning Objectives

  • Study foundations of computer architecture (on the example of RISC-V).
  • Acquire assembly language programming skills.
  • Study operating system organisation (on the example of Linux).
  • Learn how to create system software.
Expected Learning Outcomes

Expected Learning Outcomes

  • Translate high-level programming language code into assembly instructions and vice versa.
  • Understand assembly language and be able to write assembly programs.
  • Understand how pipelining works.
  • Understand the concepts of memory hierarchy, cache memory, and virtual memory.
  • Understand fundamentals of computer architecture.
  • Understand fundamentals of operating system organisation.
  • Be able to create operating-system level software in the C programming language.
  • Understand fundamental operating systems structures such as processes, system calls, scheduling, virtual memory, and file systems.
Course Contents

Course Contents

  • Computer architecture concept.
  • Data types. Byte ordering. Integer formats.
  • Computer organization. Microprocessor. RISC and RISC-V. Assembly language.
  • RISC-V instructions. Instruction formats. Arithmetic and load/store instructions.
  • Pseudo instructions, macros, and includes. Conditions, loops, and arrays.
  • Subroutines. Call stack. Calling conventions.
  • Memory-mapped I/O (MMIO).
  • Floating-point format. IEEE 754. Floating-point instructions.
  • Exceptions, traps, and interrupts.
  • Instruction-level parallelism: Pipelining.
  • Caches.
  • Virtual memory.
  • Data-level parallelism: Vector, SIMD, GPU.
  • Thread-level parallelism.
  • Optimizations.
  • Domain-specific architectures. Tensor Processing Unit.
  • Operating system architecture. Linux.
  • C programming language. GNU tools (GCC, Make).
  • System calls.
  • Linking and loading. Libraries and binary file format.
  • Strings and regular expressions.
  • Processes and threads.
  • Synchronization.
  • Inter-process communication.
  • Filesystem.
  • Devices and other special files.
  • Permissions.
  • Shell. I/O redirection.
  • SystemD services.
  • Sockets.
  • Networking.
  • Distributed operating systems.
  • Virtualization.
  • Security.
  • High-level languages and operating system.
Assessment Elements

Assessment Elements

  • non-blocking Exam
    Экзамен - устный. Прокторинг не требуется. Экзамен будет проходить в Zoom. Устная беседа в группе по 7 человек на все основные темы курса. В процессе беседы экзаменатор задаёт вопросы по темам, студенты в произвольном порядке отвечают. Пользоваться материалами и другими средствами можно, вопросы задаются на понимание.
  • non-blocking Homeworks
  • non-blocking Class activity
  • non-blocking Class presence
  • non-blocking Quizzes
  • non-blocking Final test
Interim Assessment

Interim Assessment

  • Interim assessment (4 module)
    <h2>Overall Formula</h2> There are <b>2 modules</b> $$M_i$$ (scored in the same way) and final <b>exam</b> $$E$$, which have an equal weight. <p></p> $$G = \frac{\sum_{i=1}^2M_i+E}{3}$$ <p></p> If the final grade $$G$$ is unsatisfactory, the exam can be retaken. In situations when it does not help because of low module grades $$M_i$$, the decision about the final grade is done by the commission of faculty members, who will hold the final exam. <h3>Module Formula</h3> Each module score is calculated from <b>Regular</b> and <b>Bonus</b> points: $$M_i = min(10, R_i + B_i)$$ <h4>Regular Points: 10 points</h4> $$R_i = 10\cdot (\frac{45}{100}\cdot H + \frac{10}{100}\cdot Q + \frac{10}{100}\cdot P + \frac{35}{100}\cdot F)$$ <table border="2"> <tr><td><b>Variable</b></td><td><b>Score</b></td><td><b>Description</b></td></tr> <tr><td> $$H$$ </td><td> 45% </td><td> Homework (practical tasks). There are deadlines. 50% penalty for being 1 week late. 75% penalty for larger delays. 100% penalty for cheating. </td></tr> <tr><td> $$Q$$ </td><td> 10% </td><td> Quizzes for self-checking. </td></tr> <tr><td> $$P$$ </td><td> 10% </td><td> Class presence. You need to attend more than 3/4 of classes to earn this point. </td></tr> <tr><td> $$F$$ </td><td> 35% </td><td> Final test (programming assignment). 100% penalty for cheating. </td></tr> </table> <h4>Bonus Points: 2 points</h4> $$B_i = 2\cdot \frac{\sum_k A_k}{100}$$ <table border="2"> <tr><td><b>Variable</b></td><td><b>Score</b></td><td><b>Description</b></td></tr> <tr><td> $$A_k$$ </td><td> 5% each </td><td> Class activity. Each time you broadcast a solution of a task during class hours, you get this point. </td></tr> </table> <h3>Exam Formula</h3> $$G = 10\cdot \frac{P_1 + P_2}{12}$$ <p></p> The exam consists of <b>2 parts</b> $$P_1$$ and $$P_2$$ each containing questions that cover topics from module 3 and module 4 respectively. To get a maximal grade, a student needs to successfully answer <b>3 questions</b> from each part. Each answer can give <b>0 to 2 relative points</b> (0 for «-», 1 for «±», and 2 for «+»), which are then divided by <b>maximal point 12</b> to give a grade. Points for each part $$P_i$$ are calculated with a function, which counts points for each of the questions and divides them by the total number of answers given by a student.
Bibliography

Bibliography

Recommended Core Bibliography

  • Harris, D. M., & Harris, S. L. (2012). Digital Design and Computer Architecture (Vol. 2nd ed). Amsterdam: Elsevier Ltd. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=472255
  • Архитектура компьютера, Таненбаум, Э., Остин, Т., 2014
  • Компьютерные системы. Архитектура и программирование : взгляд программиста, Брайант, Р. Э., О'Халларон, Д. Р., 2005
  • Современные операционные системы, Таненбаум, Э., 2012

Recommended Additional Bibliography

  • Hennessy, J. L., Asanović, K., & Patterson, D. A. (2012). Computer Architecture : A Quantitative Approach (Vol. 5th ed). Waltham, MA: Morgan Kaufmann. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=407995
  • Sweetman, D. (2007). See MIPS Run (Vol. 2nd ed). San Francisco, Calif: Morgan Kaufmann. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=195985
  • Операционная система UNIX : учеб. пособие для вузов, Робачевский, А. М., 2003