WELCOME TO COP 3402 SYSTEMS SOFTWARE Professor Gary T. Leavens 329 HEC (L3Harris Center) Phone: (407)823-4758 Email: Leavens@ucf.edu Office Hours: Tuesdays and Thursdays 1:30-3:30 and Fridays 1:00 to 3:00 PM, and by appointment COURSE INFO: Webcourses@UCF www.cs.ucf.edu/~leavens/COP3402 THINGS TO THINK ABOUT HW0 due tonight(!) at 11:59 PM Think about forming a group of 3 or 4 students (in this lecture section) for team projects. PREREQUISITES From the UCF Catalog: "CDA 3103C and COP 3502C each with a grade of "C" (2.0) or better." SYSTEMS SOFTWARE def: *systems software*: is software that helps run programs including: compilers, assemblers, debuggers, linkers, loaders, OS, drivers, editors, IDEs SOME DEFINITIONS def: A *compiler* translates a (high-level) programming language into a form that a computer can (easily) execute e.g., C def: An *interpreter* executes a program without translating it into machine code. (But may translate into a byte code for a VM) e.g., Python, JavaScript, C#, Java, BASIC, Lisp def: An *assembler* translates a program into a machine's native code, but the programs are low-level (unstructured, few abstraction mechanisms) 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 languages (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 LINKERS def: A *linker* combines parts of a program into a single executable (file), including library functions def: A tool's work is *static* if it is all done before runtime. A tool's work is *dynamic* if it is done (partially) in general at runtime. OTHER TOOLS RELATED TO OPERATING SYSTEMS def: A *loader* puts programs in a computer's memory, in preparation for execution. def: A *debugger* is a kind of interpreter that helps people understand execution e.g., can set breakpoints, catch traps, correlate programs to executables def: An *operating system* manages resources on a computer, and often allows sharing COURSE OBJECTIVES - Explain and correctly use the concepts - Implement, as part of a team, a compiler or virtual machine - Evaluate, as part of a team, the quality of a large software project Why? Systems software is the foundation of tools in computing Also important for understanding security Increase your software engineering skills Techniques we will use are important in programming in general LEARNING OUTCOMES By the end of the course you will be able to: - UseConcepts and explain them as related to systems software - Build systems software in a team - Appraise the quality of a software tool (as a team) PLAN FOR THE COURSE Broad outline: Virtual Machines Compilers - Lexical analysis - Syntax analysis - Code generation OS - interrupts - processes and threads GRADING AND FINAL GRADES + No curve grading + Your final grade is based on: Final Grade Components 46% Exams 23% Midterm 23% Final 34% Project (assignments) 15% Yellowdig (conversations) 5% Recitations 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. 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 YELLOWDIG A social network for the class Replaces discussions on Webcourses Accessed through Webcourses menu GOALS FOR USING YELLOWDIG - Foster a learning community - Exchange ideas, questions, and experience GRADING AND YELLOWDIG Counts for 15% of your grade Grade reflects your pace A weekly goal: 1000 points per week - each week you can earn 1000 points + 350 points Yellowdig sends to the gradbook: is a percentage at the end of the semester POINTS AVAILABLE On the Yellowdig page: In the box marked "Points earned" Click on "Show details" Expand "Earning points" TO GET A GOOD GRADE IN YELLOWDIG Participate - early and - often (regularly) WHY WORK IN A TEAM? Often used in industry You learn by teaching/helping others Different roles can enhance quality PLAN Same team all semester (4 homeworks) Note: it takes a month or more to encounter and work out problems - an important skill Teams all recieve a single grade for work - Meetings to assess teamwork with staff - Exams are individual You can give positive shout-outs to team members on Yellowdig WHAT MAKES A TEAM SUCCESSFUL? 1. Composition: having the right people for the task 2. Task characteristics: the task must be suitable 3. Process: team must combine resources effectively 4. Organizational Context: larger organization must provide a supportive context TEAM COMPOSITION Need members with knowledge, skills, abilities Are these only technical qualities? TEAM GOALS Goals can: - Be a standard to evaluate performance - Encourage involvement in a task - Help in making decisions - Help establish relationships in a team TEAM ROLES def: a *role* is a set of behaviors used in a particular social context types of behaviors: - task behaviors e.g., brainstoming, information sharing - social behaviors recognition, encouragement Help teams form and be successful SUGGESTED TEAM ROLES (from Oakley et al., 2004) - Coordinator: keeps everyone on task makes sure everyone is involved - Recorder: prepares what will be turned in - Monitor: checks that everyone understands solution and strategy for building it - Checker: double checks what is turned in OTHER POSSIBLE ROLES - Encourager: encourages thinking through approaches and ideas - Questioner: makes sure varying views are considered pushes back when group reaches consensus too fast - Stragegy analyst: observes team dynamics guides consensus process TIPS FOR SUCCESS - Have a charter describing roles and responsibilities - Get started right away - Use a diverse group with different kinds of skills, problem solving approaches, etc. - Make sure there is a common block of time to meet COMMUNICATION Good communication skills: - foster trust - establish appropriate team norms - develop climate that is collaborative and creative PITFALLS IN COMMUNICATION - focusing on what everyone already knows (vs. sharing info. known to a few) - ignoring info. that threatens beliefs (confirmation bias) - seeing only extreme viewpoints (not considering all options) COMMUNICATION PATTERNS Negative vs. Positive ============ =============== Evaluation Description Controlling Problem-oriented Deception Honesty Neutrality Empathy HOW TO HAVE GOOD TEAM MEETINGS - Only meet when there is no alternative - State purpose of meeting in writing - Start and end on time - Minimize disruptive/domineering behaviors - Affirm good behaviors verbally - Write down significant discussions and important decisions MISCONCEPTIONS ABOUT CONFLICT - All conflict is bad - All conflict is caused by misunderstandings - All conflict can be resolved, making all happy REALITY ABOUT CONFLICT - Change produces conflict - Conflict is inevitable - Conflict can help a team's success HEALTHY CONFLICTS From: - Focusing on task issues - Legitimate differences of opinion - Differences in values/perspectives - Different expectations of decisions UNHEALTHY CONFLICTS From: - Competition for power, rewards, etc. - Individual vs. team goals - Poorly run meetings - Personal grudges from the past - Faulty communication APPROACHES TO CONFLICT RESOLUTION - Collaborating: working together to solve a problem - Compromising: bargaining when a win-win isn't possible - Accommodating: smoothing out conflict by giving up on a position - Forcing: compelling a zero-sum solution in a win-lose situation - Avoiding: withdraw or delay dealing with conflict STEPS FOR RESOLVING A CONFLICT - Separate the people from the problem - Focus on shared interests - Develop many options for solutions - Evaluate options using facts - Keep trying!