I. Preliminaries for the first meeting A. staff introductions ------------------------------------------ WELCOME TO COP 3402 SYSTEMS SOFTWARE Professor Gary T. Leavens 329 HEC (L3Harris 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 tonight(!) at 11:59 PM Think about forming a group of 3 or 4 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 languages (FORTRAN, COBOL) (about 1957) needed considerable effort Various advances made compilers possible: - formal language theory - regular grammars - context-free grammars - syntax-directed translation - symbol tables and static analysis - linkers, loaders Algol 60, Algol 68 showed difficulty of implementation ------------------------------------------ 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 - interrupts - processes and threads ------------------------------------------ E. grading ------------------------------------------ GRADING AND FINAL GRADES + No curve grading + Your final grade is based on: Item Percentage of Grade Final Grade Components 46% Exams 23% Midterm 23% Final 34% Project (assignments) 15% Yellowdig (conversations) 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 III. Use of Yellowdig and Grading of it A. What is Yellowdig ------------------------------------------ YELLOWDIG A social network for the class Replaces discussions on Webcourses Accessed through Webcourses menu ------------------------------------------ B. Purpose and goals ------------------------------------------ GOALS FOR USING YELLOWDIG - Foster a learning community - Exchange ideas, questions, and experience ------------------------------------------ C. Grading ------------------------------------------ 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: ------------------------------------------ ------------------------------------------ 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) ------------------------------------------ IV. Working in Teams A. Why work in teams? ------------------------------------------ WHY WORK IN A TEAM? Often used in industry You learn by teaching/helping others Different roles can enhance quality ------------------------------------------ Why would a team do better than an individual? B. Plan for the course ------------------------------------------ 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 ------------------------------------------ C. Success ------------------------------------------ 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 ------------------------------------------ 1. Team composition ------------------------------------------ TEAM COMPOSITION Need members with knowledge, skills, abilities Are these only technical qualities? ------------------------------------------ 2. Team goals ------------------------------------------ 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 ------------------------------------------ 3. Team Roles ------------------------------------------ TEAM ROLES def: a *role* is a set of behaviors used in a particular social context types of behaviors: - task behaviors - social behaviors 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 ------------------------------------------ 4. Some tips from research (at Dartmouth) ------------------------------------------ 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 ------------------------------------------ 5. Communication ------------------------------------------ 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 ------------------------------------------ 6. Meetings ------------------------------------------ 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 ------------------------------------------ 7. Conflict ------------------------------------------ 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 ------------------------------------------ How can conflict help a team? ------------------------------------------ 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 ------------------------------------------ Each of these approaches has good and bad points: what are they? ------------------------------------------ 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! ------------------------------------------ D. References