Skip to content

codeminjun/system-programming

Repository files navigation

System Programming Course (시스템프로그래밍)

Course Language Credits

Course Overview

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.

Main Topics

  • Software programming and computational problems
  • The execution engine of a computer
  • Abstractions that make your text file run on a computing machinery

Learning Objectives

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

Course Information

Item Details
Course Code 366850-5
Credits 3
Language English
Type Major Required (전공필수)
Format Lecture, Lab, Presentation
Prerequisites Basic C programming skill

Weekly Schedule

Week 1-6: Computer Systems Fundamentals

  1. Week 1: Class overview, computing systems examples
  2. Week 2: Computing systems organization (Software: Application & System software)
  3. Week 3: Computing systems organization (Hardware: CPU, Register, Memory)
  4. Week 4: Binary vs. Text - Compilation and Execution
  5. Week 5: Language of Computer 1 - ISA and Assembly Programming
  6. Week 6: Language of Computer 2 - Advanced Programming Semantics

Week 7: Mid-term Exam

  • MIPS Assembly Programming

Week 8-14: Computational Problems

  1. Week 8: What can a computer do? Computational problems in daily life
  2. Week 9: Computer as a state machine - Turing Machine
  3. Week 10: Process & Procedure - Recursion
  4. Week 11: Simple computational problems (Hanoi, Counting coins)
  5. Week 12: Simple computational problems (Rational numbers)
  6. Week 13: Simple computational problems (Set, Ordered set)
  7. Week 14: Final project presentation

Week 15: Final Exam

  • Dr.Racket Programming

Grading Policy

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%

Textbooks & References

Main Textbook

  • Computer Systems: A Programmer's Perspective by Bryant & O'Hallaron (Pearson)

Supplementary Materials

  • UNIX 시스템프로그래밍 (2판) by 조유근 (홍릉)

Skills & Technologies

Programming Languages

  • C Language: Basic programming concepts
  • MIPS Assembly: Low-level programming
  • Dr.Racket: Functional programming

Key Concepts

  • Computer architecture
  • Binary and hexadecimal representation
  • Memory management (Stack, Heap)
  • Instruction Set Architecture (ISA)
  • State machines and Turing machines
  • Computational complexity

Related Courses

Prerequisite: Basic C programming skill

Next Course: Computer Architecture and Mobile Processor

Course Projects

Mid-term Project

  • MIPS Assembly programming assignments
  • Topics: Arithmetic operations, function calls, stack trace
  • Focus: Understanding low-level computer operations

Final Project

  • Dr.Racket programming
  • Solving computational problems
  • Project presentation required

Assignment Examples

Throughout the semester, you'll work on various programming assignments including:

  1. Binary Operations: Converting between binary, hexadecimal, and decimal
  2. Assembly Programming: Implementing algorithms in MIPS assembly
  3. Computational Problems:
    • Tower of Hanoi
    • Coin counting
    • Rational number operations
    • Set operations
    • Matrix calculations

Learning Outcomes

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

Important Notes

  • 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

Contributing

This repository contains course materials and assignments. If you're a student in this course:

  1. Fork this repository
  2. Create your assignment branch (git checkout -b assignment/your-name)
  3. Commit your changes (git commit -m 'Add assignment solution')
  4. Push to the branch (git push origin assignment/your-name)
  5. Create a Pull Request

Support

For questions about the course:

  • Check the course syllabus first
  • Review the textbook materials
  • Participate in class discussions
  • Contact the instructor during office hours

License

Course materials are for educational purposes only.


Happy Learning!

Last Updated: 2025 Fall Semester

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages