CIS 6614 meeting -*- Outline -*- * Summary and Review of the Course ------------------------------------------ SUMMARY AND REVIEW We will discuss the course So, please interact: - Offer opinions - Give feedback - Ask questions ------------------------------------------ ** The big picture ------------------------------------------ THE BIG PICTURE Why is systems software important? ------------------------------------------ ... helps programming, which is critical for computing ** 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 ------------------------------------------ *** Lessons Learned? Q: What are the most important lesson(s) you learned? ... (my votes: modularity syntax-directed analysis, follow the grammar! incremental progress recorded in data structures such as ASTs) ** Where do we go from here? *** practical/industry paths forward Q: 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? ------------------------------------------ ... - assembler languages - programming languages - OS libraries traditionally, hardware companies needed systems software people: - architects - OS and tool writers - assembler and compiler writers systems software can have a multiplier effect on productivity, as it enables others to be more efficient *** practical tools needed Q: 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? ------------------------------------------ ... boot loader, assembler, loader, OS, then maybe a C compiler... ... probably in the order above *** academic paths forward ------------------------------------------ ACADEMIC PATHS ------------------------------------------ ... undergraduate classes: COP 4020 - Programming Languages I COP 4520 - Concepts of Parallel and Distributed Processing COP 4600 - Operating Systems COP 4710 - Database Systems EEL 4768 - Computer Architecture ... graduate classes: COP 5021 - Program Analysis COP 5621 - Compiler Construction COP 5711 - Parallel and Distributed Database Systems COT 5600 - Quantum Computing ** about the class Q: What could be improved about the class? Q: What was omitted from the class that should have been discussed? Q: 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. ------------------------------------------ Q: What did we give you sufficient background for doing? Q: What didn't we provide you with sufficient background for? Q: What would you have wanted to learn about that we didn't teach?