I. Summary and Review of the Course ------------------------------------------ SUMMARY AND REVIEW We will discuss the course So, please interact: - Offer opinions - Give feedback - Ask questions ------------------------------------------ A. The big picture ------------------------------------------ THE BIG PICTURE Why is systems software important? ------------------------------------------ B. Review of syllabus ------------------------------------------ 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 ------------------------------------------ 1. Lessons Learned? What are the most important lesson(s) you learned? C. Where do we go from here? 1. practical/industry paths forward What careers or contributions can be made in industry using what we have learned in this class? ------------------------------------------ CAREERS AND INDUSTRY IMPACT What are some ways to help programmers? ------------------------------------------ 2. practical tools needed What tools are needed in practice in systems software? ------------------------------------------ TOOLS NEEDED? If a company created a new computer, what systems software would they need? What should they write first? ------------------------------------------ 3. academic paths forward ------------------------------------------ ACADEMIC PATHS ------------------------------------------ D. about the class What could be improved about the class? What was omitted from the class that should have been discussed? What was good about the class and shouldn't be changed? ------------------------------------------ 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. ------------------------------------------ What did we give you sufficient background for doing? What didn't we provide you with sufficient background for? What would you have wanted to learn about that we didn't teach?