About COP 3402
This page provides general information about COP 3402 (Systems Software) at the University of Central Florida. The course's home page is www.cs.ucf.edu/~leavens/COP3402/.
This page is organized as follows:
- Meetings
- Course Textbooks
- Accessibility
- Deployed Active Duty Military Students
- Make-Up Assignments for Authorized University Events or Co-curricular Activities
- Religious Observances
- Prerequisites
- Course Description and Credit Hours
- Course Learning Objectives
- Course Learning Outcomes
- Acknowledgments
The course grading policy and syllabus are on separate web pages. Also on a separate page is our contact information.
Meetings
For lecture class meetings, the time is as follows: Tuesdays and Thursdays from noon to 1:15 PM. The meetings are in the Psychology Building, room 108.
Lab (i.e., recitation) section meetings are your chance to ask questions and get help with the class material. The recitation you should attend is determined by the section of the class you registered for. The lab sections associated with the lecture are:
Section | Days and Times | Room |
---|---|---|
0011-LAB | Mo 8:30AM - 9:20AM | HEC 0117 |
0012-LAB | We 8:30AM - 9:20AM | HEC 0117 |
0013-LAB | Fr 8:30AM - 9:20AM | CB1 O318 |
COVID-19 and Illness Notification
Students who believe they may have a COVID-19 diagnosis should contact UCF Student Health Services (407-823-2509) so proper contact tracing procedures can take place.
Students should not come to campus if they are ill, are experiencing any symptoms of COVID-19, have tested positive for COVID, or if anyone living in their residence has tested positive or is sick with COVID-19 symptoms. See the CDC guidance for COVID-19 symptoms.
Students should contact their instructor(s) as soon as possible if they miss class for any illness reason to discuss reasonable adjustments that might need to be made. When possible, students should contact their instructor(s) before missing class.
In Case of Faculty Illness
If the instructor falls ill during the semester, there may be changes to this course, including having a backup instructor take over the course. Please look for announcements or mail in Webcourses@UCF or Knights email for any alterations to this course.
Course Accessibility and Disability COVID-19 Supplemental Statement
Accommodations may need to be added or adjusted should this course shift from an on-campus to a remote format. Students with disabilities should speak with their instructor and should contact sas@ucf.edu to discuss specific accommodations for this or other courses.
Course Textbooks
There is one required textbook for this course:
- Systems Software : Essential Concepts by Euripides Montagne, Cognella Academic Publishing, 2021, ISBN: 9781516579365.
Recommended Texts
The following books are recommended.
- Compilers: Principles, Techniques, and Tools (2nd edition) by Alfred V. Aho, Monica S. Lam, Jeffrey D. Ullman, and Ravi Sethi, Pearson, 2007 ISBN: 9780133002140
- Engineering A Compiler (2nd edition) by Keith D. Cooper and Linda Torczon, Morgan Kaufmann, 2011, ISBN: 9780120884780.
- Modern Compiler Implementation in Java (2nd edition) by Andrew W. Appel and Jens Palsberg, Cambridge University Press, 2002, ISBN: 052182060X.
Additional Readings
If you want more reading material, or help with background and concepts, then you may want to check out books on the course topics from the UCF Library.
We may use other material as described in the syllabus's bibliography.
Accessibility
We are happy to help with accessibility issues. The procedure is outlined in the following statement (modified from the faculty center for teaching and learning's web site):
The University of Central Florida is committed to providing access and inclusion for all persons. Students who have accessibility issues "due to course design limitations should contact the professor as soon as possible. Students should also connect with Student Accessibility Services (SAS) (Ferrell Commons 185, sas@ucf.edu, phone 407-823-2371). For students connected with SAS, a Course Accessibility Letter may be created and sent to professors, which informs faculty of potential course access and accommodations that might be necessary and reasonable. Determining reasonable access and accommodations requires consideration of the course design, course learning objectives and the individual academic and course barriers experienced by the student. Further conversation with SAS, faculty and the student may be warranted to ensure an accessible course experience."
Deployed Active Duty Military Students
Quoting from the faculty center for teaching and learning's web site:
"Students who are deployed active duty military and/or National Guard personnel and require accommodation should contact their instructors as soon as possible after the semester begins and/or after they receive notification of deployment to make related arrangements."
Make-Up Assignments for Authorized University Events or Co-curricular Activities
Quoting from the faculty center for teaching and learning's web site:
"Students who represent the university in an authorized event or activity (for example, student-athletes) and who are unable to meet a course deadline due to a conflict with that event must provide the instructor with documentation in advance to arrange a make-up. No penalty will be applied. For more information, see UCF policy 4-401."
Religious Observances
Quoting from the faculty center for teaching and learning's web site:
"Students must notify their instructor in advance if they intend to miss class for a religious observance. For more information, see UCF regulation 5.020."
Prerequisites
The formal prerequisite in the University of Central Florida catalog is "CDA 3103C and COP 3502C each with a grade of "C" (2.0) or better."
See the professor if you have questions about the prerequisites.
Course Description and Credit Hours
COP 3402 is a 3 credit course is titled "Systems Software."
From the University of Central Florida Catalog: " Design and development of assemblers, linkers, loaders, and compilers. Study memory hierarchy, program performance, and system level I/O."
Explanation
Systems Software consists of tools that enable the running of programs on computers. This includes software tools that:
- translate programs into an executable format. These tools include:
- assemblers (which transform human-readable assembly language, often with macros, into binary machine code), and
- compilers (which transform high level programming languages, such as C or Java, into some lower level language, such as assembly language or machine code).
- combine pieces of executable machine code into a single executable program that can be directly executed by a computer. A static linker performs such tasks before running a program; these tasks include connecting calls from one module to another (e.g., when a program calls a subroutine in a library) and (for some languages like C++) type checking calls from one module to another. A dynamic linker performs these tasks while the program is running, typically connecting calls from a program to a library function at runtime.
- place an executable program into a computer's memory and adjust any jumps to take into account the program's location in memory; such a program is called a loader.
- execute or interpret a program, carrying out its instructions; such a program is called an interpreter or virtual machine. Virtual machines typically work with binary-encoded instructions and are closely modeled on computer hardware; an interpreter may work on a program's parse tree and my be organized differently than typical computer hardware.
- help with tracing, tracking, and alteration of a program's execution; such a program is called a (low-level) debugger.
Also included in the term "systems software" is the code for the operating system itself. An operating system (OS) is a program that provides an interface to between users (and their programs) and the computer's hardware. The OS manages and provides security for the computer's resources. Of particular concern to us, in terms of the code that comprises an OS, is how the OS interacts with other software tools; for example, how does the OS interact with loaders, dynamic linkers, and debuggers? How the OS manages storage is an important interaction with compilers and assemblers.
Motivation for the Course Objectives
An understanding of how systems software, especially compilers, works is essential for developers, because:
- Systems software contains the most important tools that a developer uses to run programs,
- Developing a compiler is a large programming task that will help strengthen your software engineering skills, and
- Compiler techniques are also very useful in developing other software tools. This includes tools such as IDEs, document editors and various code improvement tools. Such tools usually involve some analysis of programs (such as lexical analysis and parsing). Integrated development environments (IDEs) typically are based on compiler technology, and even text editors designed for programmers typically involve some lexical analysis and parsing.
Motivation for the Course Plan
Because programming is an essential tool for Computer Scientists, and because the goal of systems software is to help people run programs, it is important to understand how system software works. One could also say that systems software describes how essential tools work for Computer Scientists.
Furthermore, many techniques that are used in systems software, such as parsing and recursion over grammars, are widely used in Computer Science; thus learning these techniques will help in building other kinds of applications.
Course Learning Objectives
The objectives for this course are divided into two parts: a set of essential objectives, and a set of enrichment objectives. The essential objectives will be helpful for your career as a computer scientist; hence they lead to the course's essential outcomes that we want to help you master. The enrichment objectives are less important for the course, but lead to enrichment outcomes that you are encouraged to explore both for their own sake and because learning more about those will help deepen your understanding of the essential objectives.
This course's objectives are linked to the CS program's educational objectives (in references that look like this: [CSPEO2]).
Essential Objectives
In one sentence, this course's main objective is that you will be able to work with a team to design and implement systems software [CSPEO2].
In more detail the essential objectives for this course are that you will be able to:
- [Explain] Explain and correctly use the concepts behind software tools, their design, and their role in a computer operating system [CSPEO2].
- [Implement] As part of a team [CSPEO1], effectively implement a software tool, such as a compiler [CSPEO2].
- [Evaluate] As part of a team [CSPEO1], evaluate the quality of a software tool's implementation [CSPEO2].
Enrichment Objectives
Enrichment objectives could be multiplied without limit, but the following seem most important, especially in relation to the CS program's learning objectives.
The course's enrichment objectives are that you will be able to:
- [Participate] Participate in a team that implements and evaluates software tools, such as compilers [CSPEO1].
- [Design] Design a software tool's implementation at a detailed level so that it is efficient and easily maintained [CSPEO2].
- [Improve] Improve software engineering processes related to software tools, such as compilers, so that the result may be accomplished more efficiently and correctly [CSPEO2].
Course Learning Outcomes
This course's learning outcomes are divided into two parts: a set of essential outcomes, and a set of enrichment outcomes. The essential outcomes are designed to support this course's essential learning objectives, and thus to be helpful for your career as a computer scientist or software engineer; hence we want to help you to master them. They also form the basis for grading and assessment of your learning. The enrichment outcomes are not used directly for assessment. However, you are encouraged to explore topics related to the enrichment outcomes both for their own sake and because learning more about those will help your performance relative to the essential outcomes.
The course's outcomes are linked to the course's objectives and to the computer science program's outcomes. The links to this course's objectives are shown in references that look like this: [Implement]. The links to the CS program's student outcomes are shown in references that look like this: [CSOut2]).
Essential Outcomes
In one sentence, this course's main expected learning outcome is that you will be able to, in a team, effectively and correctly implement system software [Participate] [Explain] [Implement] [Evaluate] [CSOut1] [CSOut2] [CSOut6] [CSOut7] [CSOut8].
In more detail, the essential objectives for this course are that you will be able to:
- [UseConcepts] Use and explain concepts related to systems software [Explain] [Participate] [CSOut1] [CSOut4] [CSOut7].
- [Build] Build systems software in a team. [Implement] [Participate] [CSOut1] [CSOut2] [CSOut3] [CSOut6] [CSOut7] [CSOut8].
- [Appraise] Apprise the quality of a software tool's implementation in a team. [Evaluate] [CSOut2] [CSOut3] [CSOut6] [CSOut7].
Enrichment Outcomes
Enrichment outcomes could be multiplied without limit, but the following seem most important, especially in relation to the CS program's learning outcomes.
The course's enrichment outcomes are that you will be able to:
- [Collaborate] Work effectively in a team on a software development project. [Participate] [CSOut6].
- [Advance] Advance the theory of Computer Science in a way that improves systems software or its development [Design] [Improve] [CSOut1] [CSOut2] [CSOut7] [CSOut8].
Acknowledgments
Many thanks to Euripides Montagne for discussions about this course.
Thanks to Curtis Clifton (now at Apple) for his initial work on the HTML for these web pages, which I have adapted from another course, and his style sheets, which I have also adapted.
Last modified Monday, February 6, 2023.
This web page is for COP 3402 at the University of Central Florida. The details of this course are subject to change as experience dictates. You will be informed of any changes. Please direct any comments or questions to Gary T. Leavens at Leavens@ucf.edu. Some of the policies and web pages for this course are quoted or adapted from other courses I have taught, in partciular, COP 4020.