This course gently introduces computer systems and systems programming. With the basic knowledge of application-level programming language, we will be getting deeper into a computer system, breaking the programming abstractions.
- Software programming and computational problems
- The execution engine of a computer
- Abstractions that make your text file run on a computing machinery
By the end of this course, students will be able to:
- Learn how a computer is organized
- Learn how a computer operates
- Learn what system software is, and how it operates on hardware and software boundary
- Learn what can a computer do/and what not
- Understand computational problems and write simple procedures to resolve them
- Program in MIPS assembly language
| Item | Details |
|---|---|
| Course Code | 366850-5 |
| Credits | 3 |
| Language | English |
| Type | Major Required (전공필수) |
| Format | Lecture, Lab, Presentation |
| Prerequisites | Basic C programming skill |
- Week 1: Class overview, computing systems examples
- Week 2: Computing systems organization (Software: Application & System software)
- Week 3: Computing systems organization (Hardware: CPU, Register, Memory)
- Week 4: Binary vs. Text - Compilation and Execution
- Week 5: Language of Computer 1 - ISA and Assembly Programming
- Week 6: Language of Computer 2 - Advanced Programming Semantics
- MIPS Assembly Programming
- Week 8: What can a computer do? Computational problems in daily life
- Week 9: Computer as a state machine - Turing Machine
- Week 10: Process & Procedure - Recursion
- Week 11: Simple computational problems (Hanoi, Counting coins)
- Week 12: Simple computational problems (Rational numbers)
- Week 13: Simple computational problems (Set, Ordered set)
- Week 14: Final project presentation
- Dr.Racket Programming
| Component | Weight | Description |
|---|---|---|
| Mid-term Exam | 35% | MIPS Assembly Programming |
| Final Exam | 45% | Racket Programming |
| Assignments | 5% | End-of-semester project |
| Attendance | 10% | Class participation |
| Others | 5% | Class engagement |
| Total | 100% |
- Computer Systems: A Programmer's Perspective by Bryant & O'Hallaron (Pearson)
- UNIX 시스템프로그래밍 (2판) by 조유근 (홍릉)
- C Language: Basic programming concepts
- MIPS Assembly: Low-level programming
- Dr.Racket: Functional programming
- Computer architecture
- Binary and hexadecimal representation
- Memory management (Stack, Heap)
- Instruction Set Architecture (ISA)
- State machines and Turing machines
- Computational complexity
Prerequisite: Basic C programming skill
Next Course: Computer Architecture and Mobile Processor
- MIPS Assembly programming assignments
- Topics: Arithmetic operations, function calls, stack trace
- Focus: Understanding low-level computer operations
- Dr.Racket programming
- Solving computational problems
- Project presentation required
Throughout the semester, you'll work on various programming assignments including:
- Binary Operations: Converting between binary, hexadecimal, and decimal
- Assembly Programming: Implementing algorithms in MIPS assembly
- Computational Problems:
- Tower of Hanoi
- Coin counting
- Rational number operations
- Set operations
- Matrix calculations
Students who successfully complete this course will:
- Understand the general aspects of computing systems
- Be able to analyze and solve computational problems
- Write programs in both assembly and high-level languages
- Comprehend the relationship between hardware and software
- Understand memory organization and management
- Learn about computational limits and capabilities
- Language: All lectures are conducted in English
- Lab Work: Hands-on programming is a major component
- Attendance: 10% of your grade - don't miss classes!
- Prerequisites: Make sure you're comfortable with C programming before taking this course
This repository contains course materials and assignments. If you're a student in this course:
- Fork this repository
- Create your assignment branch (
git checkout -b assignment/your-name) - Commit your changes (
git commit -m 'Add assignment solution') - Push to the branch (
git push origin assignment/your-name) - Create a Pull Request
For questions about the course:
- Check the course syllabus first
- Review the textbook materials
- Participate in class discussions
- Contact the instructor during office hours
Course materials are for educational purposes only.
Happy Learning!
Last Updated: 2025 Fall Semester