COM2100 Systems Programming - Lecture Notes
Unit Overview
- Introduction to COM2100 Systems Programming
- Kate Stefanov (Lecturer) and Damien Jard (Co-lecturer)
- Lachlan Patrick (Senior TA) will assist
Interactivity
- Encouragement of questions during lectures for clarity
- After-lecture consultations available for private queries
Workshops and Activities
- Interactive mode in lectures and workshops
- Importance of engaging with materials
- Workshops to provide essential skills prior to project work
Course Content
- Understanding how computers work:
- Central Processing Unit (CPU)
- Arithmetic Logic Unit (ALU)
- Importance of memory in computing
- Classification of memory: external vs internal
- Introduction to programming concepts with C and assembly language
Learning Goals
- Master command line interface usage
- Produce system-level programming code
- Analyze data representation (integers, floats, etc.)
- Write and read assembly language (x86), identifying performance optimization
- Understand security implications in programming
Course Structure
- Two types of labs:
- Lab 1: C Programming
- Lab 2: Assembly Language
- Weekly quizzes contributing to the final grade (10% each)
Assessment Breakdown
- 20% Data File Lab
- 25% Assembly Lab
- Midterm Exam and Final Exam % not specified
- Weekly quizzes to monitor progression
Lecture Delivery
- Lectures recorded for review (Echo360)
- Approach will always aim for extensive interaction
- Practical sessions also include consulting hours for extra support
Emphasis on Individual Work
- Strict rules against unauthorized assistance
- Individual assignment submissions emphasized
Technical Concepts
- Overview of system architecture: OS, utility programs, language translators
- Differences between compilers (translate entire programs) vs interpreters (execute line by line)
- Importance of understanding binary, assembly language and machine language
Command Line Interface (CLI) Fundamentals
- Basic commands:
ls,pwd,cd, etc. - Usage of flags to modify command behavior
- Learning UNIX/Linux commands through
manmanual pages - File handling commands: create, move, remove files
- Basic commands:
Introduction to Data Types in C
- Various data types: integer, float, pointers
- Understanding and using pointers in C for addressing memory
Practical Coding with C
- Syntax and structure of printf statements
- Distinction between C and Java syntax with respect to data types and structures
- Learning how to debug and write efficient code in C
Reflection on Programming Concepts
- Reiteration on the importance of grasping underlying machine principles for systems programming
- C still largely used for system programming due to its efficiency and control over hardware interactions
Course Resources
- Recommended textbook: "Computer Systems: A Programmer's Perspective"
- Resources for online UNIX and C learning are available
- Laboratory commands and due dates provided within the unit guide
Final Notes
- Engaging actively is crucial for success
- Utilize the resources and support provided throughout the semester
- Upcoming tangible tasks include lab submissions, quizzes, and workshop attendance to solidify learning