I. Preliminaries for the first meeting A. staff introductions ------------------------------------------ WELCOME TO COP 3402 SYSTEMS SOFTWARE Professor Gary T. Leavens 329 L3 Harris Center Phone: (407)823-4758 Email: Leavens@ucf.edu Office Hours: COURSE INFO: Webcourses@UCF www.cs.ucf.edu/~leavens/COP3402 ------------------------------------------ B. staff introductions C. things to think about ------------------------------------------ THINGS TO THINK ABOUT HW0 due Friday at 11:59 PM Think about forming a group of 2 or 3 students (in this lecture section) for team projects. ------------------------------------------ II. the course itself A. Prerequisites ------------------------------------------ PREREQUISITES From the UCF Catalog: "CDA 3103C and COP 3502C each with a grade of "C" (2.0) or better." ------------------------------------------ B. What is systems software? ------------------------------------------ SYSTEMS SOFTWARE def: *systems software*: ----------------------------------------- What are examples of systems software? 1. compilers, interpreters, assemblers ------------------------------------------ SOME DEFINITIONS def: A *compiler* def: An *interpreter* def: An *assembler* ------------------------------------------ What does it mean for a programming language to be "high-level"? What are some examples of languages with interpreters? ------------------------------------------ SOME HISTORY Computers essential for modern life (e.g., check clearing) Nearly impossible for humans to program in machine code Assembly language called "auto coding" Subroutines and libraries allowed expertise to be codified High-level langauges (FORTRAN, COBOL) (about 1957) needed considerable effort Algol 60, Algol 68 showed difficulty of implementation Various advances made compilers possible: - formal language theory - regular grammars - context-free grammars - syntax-directed translation - symbol tables and static analysis - linkers, loaders ------------------------------------------ 2. linkers ------------------------------------------ LINKERS def: A *linker* def: A tool's work is *static* if ------------------------------------------ Why is a linker needed in C? Does a C++ linker do anything else besides what is done in C? Does a linker do it's work before running a program? What is the linker called in Unix? 3. operating system tools ------------------------------------------ OTHER TOOLS RELATED TO OPERATING SYSTEMS def: A *loader* def: A *debugger* def: An *operating system* ------------------------------------------ What is the loader called in Unix? What are some example debuggers? C. course goals 1. objectives What are your objectives for this course? How do you want this course to help you in 5 years? ------------------------------------------ COURSE OBJECTIVES - Explain and correctly use the concepts - Implement, as part of a team, - Evaluate, as part of a team, Why? ------------------------------------------ 2. outcomes ------------------------------------------ LEARNING OUTCOMES By the end of the course you will be able to: - UseConcepts - Build - Appraise ------------------------------------------ D. plan for the course ------------------------------------------ PLAN FOR THE COURSE Broad outline: Virtual Machines Compilers - Lexical analysis - Syntax analysis - Code generation OS - interupts - processes and threads ------------------------------------------ E. grading ------------------------------------------ GRADING AND FINAL GRADES + No curve grading + Your final grade is based on: 41% project (homeworks) 23% midterm exam 31% final exam 5% recitations ------------------------------------------ 1. Textbooks ------------------------------------------ TEXTBOOKS Recommended: Systems Software: Essential Concepts, by Euripides Montagne, Cognella, Cognella Academic Publishing, 2021. Compilers: Principles, Techniques, and Tools (2nd edition) by Alfred V. Aho, Monica S. Lam, Jeffrey D. Ullman, and Ravi Sethi, Pearson, 2007. Engineering A Compiler (2nd edition) by Keith D. Cooper and Linda Torczon, ‎Morgan Kaufmann, 2011. Modern Compiler Implementation in Java (2nd edition) by Andrew W. Appel and Jens Palsberg, Cambridge University Press, 2002. ------------------------------------------ 2. cooperation and cheating ------------------------------------------ COOPERATION Can talk with others about homework - but must cite: - people on different teams - other sources CHEATING Exchange of finished answers outside team - without cooperation in solving them - without certification Using ideas of others - without citation Copying answers from the web - without citation ------------------------------------------ 3. ask for questions/concerns