MASIS Class Topics

MASIS stands for Modern Applications and Software Infrastructure Systems. It is also the Armenian name for mount Ararat.

– Aims to promote professional principles and practice for creating production-quality software solutions.
– Designed to also help students connect concepts learned in a typical four-year university course to real-life code.
– Assumes knowledge of computer science basics and sufficient English (all texts, videos and terminology is in English).
– Currently taught at Information Technologies Educational and Research Center of the Yerevan State University.
– Join our Facebook group to follow the announcements and participate in discussions.
– Click on the title of a lesson to view its slides. Constructive comments, improvements, bug reports, etc. are welcome.

– Remember: there are no shortcuts and no royal roads to geometry. This class is meant to be a solid basis to build on.


  • Introduction
  • Objectives
  • Quick class overview
  • Team project(s)
  • Principles



  • Types, Variables, and Arithmetic
  • Functions
  • Scope
  • Constants
  • Pointers, Arrays, References
  • Templates
  • STL
  • Containers
  • Strings
  • Time
  • Numeric Limits
  • Threads


  • Version Control
  • GitHub
  • Git
  • Projects


  • Origins and Evolution
  • Stored-Program Computer
  • Von-Neumann Architecture
  • Harvard Architecture
  • Modified Harvard Architecture
  • Non-Uniform Memory Access (NUMA)
  • Limits of Physics
  • Physical Memory Hierarchy
  • Major Latency Figures
Video Part IPart II



  • Types of Processing Units
  • Simplified CPU Example
  • Core 2 Duo Architecture
  • Core i7 Architecture
  • Intel Tick-Tock Model
  • Cache Types
  • From Power On to Idle Loop



  • Locality of Reference
  • Operating Principle
  • Memory Access
  • Fetch-Decode-Execute Cycle
  • Hardware Optimizations
  • Costs of Basic Operations



  • C++ in Today's World
  • Typical C++ Applications
  • The Standard and Implementations
  • Programs
  • Static Analysis
  • Dynamic Analysis



Lesson 6.1
Profiling Programs
  • Visual Studio Profiler
  • Profiling, Bottlenecks and Optimization
  • Other Profilers Overview
  • Debuggers

Videos - Sampling (mispredictions, cache misses) | Instrumentation (cache misses)

  • Sign-Magnitude
  • One's Complement
  • Two’s Complement
  • Bits & Hexadecimals
  • Multi-byte Data Representation (Endianness)
  • Connection with Abstract Algebra



  • Compiler Optimizations
  • Library Optimizations
  • Manual Optimizations
  • Theory and Engineering


  • Program Memory (Address Space) Layout
  • 32-Bit and 64-Bit Platforms
  • Logical Memory Hierarchy
  • Object Access, Cache Lines, Pages
  • Alignment



  • Duality of Performance and Security
  • Typical Vulnerabilities and Exploits
  • Attack Vectors and Protection Mechanisms
  • Examples of Real-Life Vulnerabilities
  • Quines and Viruses




Lesson 11
  • The Most Important C++ Feature
  • Resource Management
  • RAII
  • Exception Safety
  • Type Safety
  • Thread Safety



  • Detailed Analysis



  • Coarse-grained Parallelism
  • Fine-grained Parallelism
  • Embarrassingly Parallel Problems
  • Processes, Threads and IPC
  • Semaphores
  • Deadlocks, Livelocks, and Avoidance Mechanisms
  • Mars Pathfinder and Priority Inversion
  • Curiosity Rover
  • Passing Arguments
  • Returning Results
  • Sharing Data
  • False Sharing
  • Waiting for Events
  • Communicating Tasks
  • Composable Concurrency



  • Concept of Modules
  • Composability
  • Separate Compilation
  • Parallel Compilation
  • Modularity in Large Programs
  • UNIX Philosophy



  • Libraries and Frameworks
  • Overview of Major C++ Libraries
  • Overview of Major C++ Frameworks
  • APIs and ABIs



  • Importance of English
  • Final Thoughts
  • The Most Important Key