Computing systems, such as mobile phones, laptops or personal computers, have been an important parts of human beings’ everyday life. For example, computer scientists, programmers and engineers use computing systems in many of their every tasks. In principle, understanding of what is going on beyond the statements in high-level programming languages such as Python, Java, and C/C++ will help computer scientists and programmers write more efficient code. Similarly, such undertanding helps engineers interact better with their computing systems at the device or pin level. Thus, this is designed as the first course in computing systems for students who are interested in computer sciences and/or engineering majors at Fulbright University Vietnam. Its objective is to provide a strong foundation on the underlying structure of a computing system that the students can build on in later majored courses with advanced topics such as computer architecture, operating systems, embedded systems, databases, networks, signal processing, algorithm design and so on.
How are computing systems are designed and implemented? In principle, computing systems often involve many layers of abstraction, from gates and circuits through machine and assembly code to software libraries and applications. This course introduces students to the abstract design and implementation of computer systems from the digital level in the hardware upwards to the interface between the hardware and the software. In particular, the course starts by revisting the concept of bits and introducing arithmetic and logical operations on bits. Next, it takes the students from the building of logic gates based on the transistor as a switch, gated latches to more complex logic structures. The knowledge is then applied to implement memory and a finite state machine. From there, students study the instruction cycle that the central processing unit (CPU) of a computer follows. As an example, students study a particular computer that is able to capture the important structures of a modern computer, while simple enough to facilitate complete understanding and hands-on programming experiences. Students also explore decisions and tradeoffs involved in the design and implementation. Applied projects and/or lab assignments might include the design and simulation of a CPU, and the tools used to program low-level systems.

offering time

Fall 22


Computer Science


Kien Truong



Course code


Discover the future awaiting
you at Fulbright

Learn how to apply

This site uses cookies to provide a better user experience.

Essential cookies are active by default and are necessary for the proper functioning of the website. Analytics cookies gather anonymous information for us to enhance and monitor the site. Performance cookies are employed by third parties to optimize their applications (such as videos and maps) that are embedded within our website. To accept all cookies, click 'I accept.' Alternatively, choose your preferences for analytics and performance cookies, then select 'Close cookie control.'