Comp309 PDF

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

Subject Description Form

Subject Code COMP309

Subject Title System Programming

Credit Value 3

Level 3

Pre-requisite / Pre-requisite: COMP201 and COMP304


Co-requisite/
Exclusion Co-requisite/Exclusion: Nil

Objectives
 To introduce students the concepts and principles of system programming and
to enable them to understand the duties and scope of a system programmer.
 To provide students the knowledge about both theoretical and practical aspects
of system programming, teaching them the methods and techniques for
designing and implementing system-level programs.
 To train students in developing skills for writing system software with the aid
of sophisticated OS services, programming languages and utility tools.

Intended Learning Upon completion of the subject, students will be able to:
Outcomes Professional/academic knowledge and skills
(a) organize the functionalities and components of a computer system into
different layers, and have a good understanding of the role of system
programming and the scope of duties and tasks of a system programmer;
(b) grasp the concepts and principles, and be familiar with the approaches and
methods of developing system-level software (e.g., compiler, and
networking software);
(c) apply the knowledge and techniques learnt to develop solutions to real-
world problems;
(d) select and make use of the OS kernel functions and their APIs, standard
programming languages, and utility tools;
(e) organize and manage software built for deployment and demonstration;

Attributes for all-roundedness


(f) analyze requirements and solve problems using systematic planning and
development approaches;
(g) write technical project reports in well-organized and logical manner;
(h) work in teams and collaborate with classmates.

Alignment of Programme Outcomes:

Programme Outcome 1: This subject contributes to having students practice their


writing skills with project document and report writing.

Programme Outcome 4: This subject contributes to developing student critical


thinking through tutorial and lab exercises on solving problems. They will also
practice more in written assignments, programming exercises, and project.

Programme Outcome 5: This subject contributes to problem solving with


programming skills through lab exercise and project with proper design and
implementation.

Programme Outcome 7: This subject contributes to team work with group-based


project for students to practice team spirit.

Subject Synopsis/ Duration of


Topic
Indicative Syllabus Lectures
1. Introduction to system programming and Unix 2.5
Layered structure of a computer system; system software and
application software; scope and tasks of system
programming.
Evolution of UNIX; features of UNIX; UNIX standards; good
style of UNIX programming.
2. Introduction to UNIX Systems 5
Files; types of UNIX files; UNIX file system; structure and
representation of files in UNIX file system; directories;
accessing files in UNIX; I/O redirection; devices and device
drivers; UNIX file interface (APIs).
UNIX shell; UNIX process creations and execution; process
management; parent and child processes; UNIX process
interfaces (APIs).
3. Introduction to Unix Device Driver 2.5
Device Drivers; design issues; types of device drivers; major
components of a device driver.
4. Device Driver Development 7.5
OS/Driver interface; internal operations of a device driver;
structure and major components; address spaces and data
transfer; typical character/block driver design and
implementation.
5. Overview of compiler construction 2.5
Syntax and semantics of programming languages; language
translation approaches; tasks of a compiler; the compiler
process.
6. Lexical analysis 5
Tasks of lexical analysis; specifying tokens by regular
grammars and regular expressions; recognizing tokens by
Finite Automata (FA); construction of FA from regular
expressions; converting NFA to DFA; simulating DFA.
7. Syntax analysis 7.5
Tasks of syntax analysis; specifying language constructs by
context-free grammars; BNF; derivation; parse and syntax
trees; recognizing language constructs by Pushdown
Automata; top-down and bottom-up parsing methods.
8. Code generation 2.5
Intermediate compilation phases; symbol table; intermediate
code generation; code optimization; code generation.
Total 35
Tutorials: 3 hours
Laboratory Experiment:
Duration of
Topic
Laboratory
1. UNIX system and C programming. 2
2. LEX and YACC. 3
3. UNIX programming (processes, files, device drivers). 6
Total 11

Teaching/Learning
In lectures, concepts, models and algorithms will be explained with illustrative
Methodology
examples.

Tutorials and lab sessions help students understand concepts and improve their skills
on solving problems.

Assignments help develop students’ programming skills and critical thinking.

Assessment
Methods in Specific assessment % weighting Intended subject learning outcomes to be
Alignment with methods/tasks assessed (Please tick as appropriate)
Intended Learning
Outcomes a b c d e f g h

1. Assignments 35%        

2. Mid-term 20%      

3. Examination 45%      

Total 100 %

All three items are appropriate to evaluate the intended learning outcomes. Assignments
are used to evaluate writing skills, critical thinking, problem solving and team work
(items a – f). Mid-term test and final examination can further help evaluate the above
outcomes, in particular, items a-f.

Student Study Class contact:


Effort Required
 Lecture 35 Hrs.

 Tutorial/Lab 14 Hrs.

Other student study effort:

 Assignments 49 Hrs.

Total student study effort 98 Hrs.

Reading List and


Textbook:
References 1. A.V. Aho, Monica S. Lam, R. Sethi and J.D. Ullman, “Compilers: Principles,
Techniques, and Tools”, 2nd edition, Addison-Wesley, 2006.
2. B. Molay, “Understanding Unix/Linux Programming ”, Pearson Education,
2003.
3. G. Pajari, “Writing Unix Device Drivers”, Addison-Wesley Publishing
Company, 1993.
4. J. Corbet, A. Rubini, and G. Kroah-Hartman, “Linux Device Drivers”, 3rd
edition, O'Reilly, 2005.

Reference Books:
1. W. R. Stevens and S. A. Rago, “Advanced Programming in the UNIX
Environment ”, 2nd edition, Addison-Wesley, 2005.
2. A.W. Appel, “Modern Compiler Implementation in Java”, Foundation Books,
2007.
3. K.C. Louden, “Compiler Construction: Principles and Practice”, PWS
Publishing Company, 1997.
4. L.L. Beck, “System Software: an Introduction to System programming”, 3rd
edition, Addison Wesley, 1996.
5. K. Cooper and L. Torczon, “Engineering a Compiler”, Morgan Kaufmann,
2003.
6. J. Cooperstein, “Writing Linux Device Drivers: a guide with exercises”,
CreateSpace, 2009.

You might also like