Lecture slides of the modules:
1. Operating system
2. Computer organization and architecture
3. Open source

Free and Open Source Software (FOSS)

Any software is a collection of programs that are implemented in different sort of programming language which could be in thousands of lines of codes. 

Open Source, asopposed to proprietary software, provides code which is available for viewing, modification, improvements and “bug-fixing.” 

As a result the code being open to view and modification, the software evolves rapidly and constantly to higher and higher level of quality.

Benefits of Using Free and Open Source Software (FOSS)

The most important reasons for using FOSS for the purpose of this study are as follows:

1. Free software

2. Free distribution

3. Participant (not end user) 

4. Community

Course Objectives

The objectives of this course are to introduce students to open source software. Students will study common open source software licenses, open source project structure, distributed team software development, and current events in the open source world. Students will also work on an open source project and will be expected to make a significant contribution.

After completing this course, the student should be able to:

  1. Explain common open source licenses and the impact of choosing a license;
  2. Explain open source project structure and how to successfully setup a project;
  3. Be competent with distributed software engineering tools and processes such as test-driven development, issues tracking, unit testing, code review, distributed version control, and continuous integration

Course Syllabus

1. Course Meeting Time:

        • Tu:
          • 01pm to 04pm  -  Location: B3.202
        • We:
          • 01pm to 04pm  -  Location: A5.403
        • Th: 
          • 07am to 10am  -  Location: A5.305 

2. Instructor:    Đoàn Duy Bình      doanduybinh@gmail.com

3. On-going Assessment:

        • Labs:                              20% (Linux)
        • Midterms:                      20% (Multiple-choise)
        • Final Exam:                    60% (Presentation)

Learning Outcomes

  • Demonstrate understanding of the concepts, structure and design of operating Systems
  • Demonstrate understanding of operating system design and its impact on application system design and performance
  • Demonstrate competence in recognizing and using operating system features.


  1. Operating systems concepts and overview: Historical perspective, types of operating systems, architecture of OSs. 
  2. Process Management: processes and threads, process creation, synchronization (mutual exclusion, Semaphores, Monitors) and communication; 
  3. Processor scheduling; Deadlock prevention, avoidance and recovery. 
  4. Memory management: Main Memory Management, Virtual Memory Management (swapping, paging, segmentation and page-replacement algorithms); 
  5. File system structure and implementation; 
  6. Input Output systems and device management; 
  7. Protection and security; 
  8. Hands on study of the system call/end user interface of an industry standard operating system e.g. Linux: programming with process, File and I/O system calls, shell commands and scripts.
Course Syllabus

1. Course Meeting Time:

  • Mo: 
    • 07am to 10am  -  Location: B3.502
    • 01pm to 04pm  - Location: A5.404A
  • Tu:
    • 07am to 10am  -  Location: A5.404B
  • Th: 
    • 01pm to 04pm  -  Location: B3.401 

2. Instructor:    Đoàn Duy Bình      doanduybinh@gmail.com

3. On-going Assessment:

  • Labs:                              10% (Linux)
  • Presentation :                10% 
  • Midterms:                      20% (Multiple-choise)
  • Final Exam:                     60%  (Multiple-choise or Paper)

Why should COA be studied?
Course Objectives

Important questions:

  • How are computers organized? 
  • How are computers made?
  • How are combinational circuits made?
  • How may we understand the way computers work?
  • How can computers allow many programs running concurrently?
  • What are answers for above questions?

Course Description

Chapter 1: Introduction
Chapter 2: Computer Evolution and Performance"
Chapter 3: A Top-Level View of Computer Function and Interconnection
Chapter 4: Cache Memory
Chapter 5: Internal Memory
Chapter 6: External Memory
Chapter 7: Input/Output
Chapter 8: Operating System Support
Chapter 9 Number Systems
Chapter 10 Computer Arithmetic
Chapter 11:  Digital Logic
Chapter 12: Instruction Sets: Characteristics and Functions
Chapter 13: Instruction Sets: Addressing Modes and Formats,  Assembly Language
Chapter 14: Processor Structure and Function
Chapter 15: Reduced Instruction Set Computers
Chapter 16: Instruction-Level Parallelism and Superscalar Processors
Chapter 17: Parallel Processing
Chapter 18: Multicore Computers
Chapter 19: Control Unit Operation
Chapter 20: Microprogrammed Control