{Latest update: 27 April 2017}

  1. Description
  2. Objectives
  3. Subjects
    1. Introduction to Computer Science
    2. Computer Science and Information Systems
    3. Machine Architecture and Organization
    4. Introduction to Algorithms and Data Structures
    5. Computer Programming Concepts
    6. ANSI C Language Programming
    7. Operating Systems Internals
    8. Systems Programming
    9. Advanced Programming Principles
    10. Debugging and Troubleshooting

Description

Objectives

The objectives of this course are as follows:

  1. Provide an introduction to the general study of computer systems.
  2. Provide a basic theoretical foundation to deal with the analysis of computer systems, including design, data structures, and algorithms.
  3. Provide a basic knowledge of operating system internals, systems programming, and the ANSI C programming language.

Subjects

List of subjects for the whole course in the order in which they will be studied (the order itself is subject to changes as I progress).

For the time being, here is a list of possible topics for the course, together with links to books on the subject from Amazon:

Introduction to Computer Science

Introduction to the field of Computer Science, defined by the Wikipedia entry (retrieved on 21 Apr 2017) as:

...the study of the theory, experimentation, and engineering that form the basis for the design and use of computers. It is the scientific and practical approach to computation and its applications and the systematic study of the feasibility, structure, expression, and mechanization of the methodical procedures (or algorithms) that underlie the acquisition, representation, processinr, storage, communication of, and access to information. An alternate, more succint definition of computer science is the study of automating algorithmic processes that scale. A computer scientist specializes in the theory of computation and the design of computational systems.

List of resources:

Debugging and Troubleshooting

A practical approach to how to troubleshoot, analyze and debug system problems, especially in the Linux operating system.

List of resources: