SUMMARY AND REVIEW We will discuss the course So, please interact: - Offer opinions - Give feedback - Ask questions THE BIG PICTURE Why is systems software important? Allows people to write and run programs Understand these tools WHAT WE STUDIED I. VMs A. Runtime stack B. Support for recursion C. Nesting support (static links) II. Compilers and Interpreters A. Compilers vs. Interpreters B. Syntax Analysis 1. Lexical analysis and regular grammars 2. Parsing and context-free grammars 3. ASTs C. Static Analysis, declaration checking D. Code Generation 1. IRs 2. Addressing with static scoping 3. Declarations 4. Expressions 5. Statements III. Assemblers A. ELF IV. Operating Systems A. Structure B. Interrupts C. Processes and Threads CAREERS AND INDUSTRY IMPACT What are some ways to help programmers? Better error messages Help them write better (e.g., more correct) code Faster tools Better optimization TOOLS NEEDED? If a company created a new computer, what systems software would they need? BIOS or boot loader assembler compiler (maybe for C) OS linker and (relocating) loader libraries What should they write first? ACADEMIC PATHS COP 4020 - Programming Langues I COP 4600 - OS CLASS OBJECTIVES - Explain and correctly use the concepts behind software tools, their design, and their role in a computer operating system - Implement, as part of a team, a software tool, such as a compiler - Evaluate, as part of a team, the quality of a software tool's implementation CLASS LEARNING OUTCOMES - [UseConcepts] Use and explain concepts related to systems software - [Build] Build systems software in a team. - [Appraise] Apprise the quality of a software tool's implementation in a team.