Skip to content

Latest commit

 

History

History
241 lines (195 loc) · 21.7 KB

SYLLABUS.md

File metadata and controls

241 lines (195 loc) · 21.7 KB

Syllabus

CS4320/7320 remains listed as a face to face course, however your participation in classroom activities is at your own discretion. I will provide all materials for the course through its GitHub repository, and where feasible through Canvas. GitHub is where you will learn how to work on a software team, solving non-linear, difficult problems in the face of user’s who generally struggle to express what they want.

Points: There are 1,000 points in this course. We will divide your final score by 10 to arrive at your grade. Canvas should to this for us, but we always double check.

Introduction

  • This course will provide in-depth coverage of software engineering. The concepts presented are applicable to all types of software systems. Additionally, the course will develop the student's skills of interpersonal communication, team collaboration, project management, requirements analysis and research. After successfully completing this course, you will be able to apply fundamental software engineering concepts including analyzing, specifying, and designing large-scale systems; system implementation, testing and deployment.
  • Graduate students enrolled in the course will be perform additional literature review and semester project work.
  • The syllabus and the course schedule will evolve based on student progress. We will never alter the syllabus for assignments in the past or percentage of the grade. Topics may be changed and assignments substituted as necessary. Please make sure you are looking at the current version of the syllabus from Canvas at all times. Any changes will be announced in class as well.
  • Prerequisite Courses CS2050, CS3380

Student Hours:

  • Wenyi Lu: TBD
  • Dr. Goggins: TBD

Topics

Our Topical Path Through the Semester

  1. Introduction to Software Engineering
  • Software Engineering as Systems Thinking
  • Origins of Software Engineering
  • Git: Distributed Version Control
  1. Software Engineering Models and Methods
  • Modeling Software
  • Methods: The Software Development Lifecycle
  1. Requirements Analysis and Management
  • Requirements Management Processes and Tools
  • Working with Use Cases
  1. Systems Theory and Ethics
  • Systems Theory in Software Engineering
  • Ethics in Software Engineering
  • Collaboration, Coordination, and Group Work
  • Conflict and Communication
  • Metrics and Measurement
  • Community Building
  • Software as a Complex System
  1. Technology Architecture and Software Design
  • An Overview of Technology Architecture and Software Design
  • Sketching
  • Prototyping
  • Design Modeling
  1. Human Computer Interaction and Social Computing
  • People
  • HCI: Human Computer Interaction
  • Social Computing
  1. Construction
  • Software Frameworks
  • Programming Languages, Databases, and Algorithms
  • Continuous Integration
  • Releasing Software
  1. Testing
  • Test Driven Development
  • Writing Software Tests and Evaluating Test Coverage
  • Continuous Integration and Testing
  1. Maintenance and Evolution
  • Modifying Released Software
  • Managing Dependencies
  • Evaluating the Impact of Proposed Changes
  1. Software Engineering Projects
  2. Essential Orthogonal Disciplines
  • Documentation
  • Security

Instructors

  1. Teaching Assistant For all technical questions, grade questions or questions regarding the class, first, make sure you have read the syllabus. Your second point of contact are the Teaching Assistant (TA) for this class. They will raise any issues to Goggins if they are unable to answer your questions. The TA's for this course are:
  • Wenyi Lu
  1. Instructor

Meeting Schedule

Tuesday and Thursday 2:00 – 3:15 PM

Git and Github

  1. Use this cheat sheet. You will need it. CHEAT SHEET
  2. Git and Github are TEAM oriented software engineering technologies. Teamwork is now organic to computing, programming, developing, designing, and many parts of life.

Participation in Class is Option, and TA Student Hours

  1. This course is project based. Your assignments will involve the routine submission of working code on GitHub.
  2. The first few weeks we will work through tooling issues with you, after that we expect you have learned how to use the slack channel and Google Each other.
  3. SLACK: Join. Participate. HELP EACH OTHER. Software Engineering is a team sport. Or an orchestra. The Tubas are not competing against the Drum Corps. They may be competing against the Trombones, but lets keep that off the field. JOIN SLACK CHANNEL NOW: http://bit.ly/software-eng-spring-2020

Expectations

  1. First, my basic expectations: For you to have viewed each course day's videos (short videos!), and any associated reading assignments prior to the scheduled lecture date. Again, you are NOT required to be in the classroom. Keeping up with materials will be essential for keeping us “together” on our path.
  2. I will have student hours on zoom every week. We can discuss the times that work best in the coming weeks.
  3. The course will include discussion forums where you get to know each other, and discuss questions I pose for you in the assignments.
  4. You will have access to a Slack Channel, which will usually be the swiftest channel to get my attention on during the semester. Messaging systems like Slack are also usually more appropriate for team coordination work, when compared with more asynchronous tools like discussion forums.
  5. You will have routine "self assessments" in Canvas. They will not be a component of your grade, except that you will be required to complete them. Your "score" replaces some of the feedback on how well you are understanding the material that I historically discern from confused looks in the classroom. But your "score" is not graded. Just completing the self assessment.
  6. Software engineering methods common in open source software are similar to those employed in corporate environments, and we will largely collaborate on open source projects. Some of my choosing, some of your own choosing. All of this work will take place on GitHub, and be submitted as an assignment using Canvas.
  7. You have my personal commitment to creating a high quality learning opportunity for you, regardless of how you choose to participate.

Comments on Learning in the Present Day

People learn through a combination of social engagement with others, and enough cognitive stress to push you past what you already know, or think you know. While avoiding too much cognitive stress. Its important therefore that you take the time to engage with your course mates, and folks on teams you are assigned to work in for parts of the course. In the open source communities where I do research and contribute there is a lot of asynchronous coordination using GitHub issues, email lists, and Slack channels. Each group should make its own decisions about internal coordination mechanisms.

Emotional stress also inhibits learning, and in present times many of us are affect by these types of "learning inhibitors". As your professor this semester, I am personally committed to respecting any stress/anxiety related, or other health challenges that get in your way this semester.

My focus will be on ensuring you have the opportunity to understand and work with this course's curricula, and conclude your semester with a successful experience in this course regardless of the challenges we may face together. Learning to work effectively in software teams is a significantly different type of learning than mastering algorithms, data structures, or a particular language.

Course Prerequisites

  • CS 2050CS 3380
  • Access to a non-Windows Operating System: There are many anomalies associated with Microsoft Windows based computers, even with its implementation of Ubuntu Linux that students find time consuming to resolve. These issues make Windows based computers a significant disadvantage in this course because the Faculty and TA simply do not have time to help troubleshoot these kinds of difficulties. If you have a Windows based computer as your primary operating system please find another way. To the extent possible, we will try to help identify resources, to help.

Course Procedural Matters

  1. Work will be completed in a GitHub Repository you are assigned for the course or submitted via Canvas.
  2. Group Work
  • Feedback will be given as comments, issues and other forms of instructor contributions to your GitHub Repository
  • GitHub Repository Baseline Structure will be provided for Group Projects
  1. Technology
  • You will need to identify a deployment environment:
  • Unix based Amazon EC2 Server
  • Postgres SQL as the Database Option 1
  • MongoDB as the Database Option 2
  • Flask : A Python Web Framework.
  • Python 3
  • Python Unit Testing Framework

Course Topics Resources

It is expected that students are proficient with performing basic web-based and Engineering Library http://mulibraries.missouri.edu/engineering/ searches for information. Throughout the semester, students will be assigned reading from the IEEE Computer Society's Software Engineering Body of Knowledge:

  • Short summaries of lecture topics may also be provided in place of the SWEBOK chapters.
  • Additionally, IEEE, ACM and other open source papers providing thorough coverage of Software Engineering and the state of best practices will be assigned reading throughout the semester.

High Level Overview Texts (Optional)

Software Engineering :

  • Sommerville, Ian. Software Engineering. Ninth or Tenth Edition. Addison-Wesley, 2010. ISBN: 0-137-03515-2

Unified Modeling Language (UML) :

  • Fowler, Martin. UML Distilled. Third Edition: A Brief Guide to the Standard Object Modeling Language. Boston, MA: Addison-Wesley, 2004. ISBN: 0-321-19368-7

Technical Writing and Style :

  • Liebowitz, Jay, William Agresti and G. Reza Djavanshir. Communicating As IT Professionals. Upper Saddle River, NY: Pearson Prentice Hall, 2006. ISBN: 0-13-146828-6

Departmental Curriculum Guidelines : Course Learning Objectives

  1. Students will write technical documents (proposals, designs, documentation, executive summaries and project reports) to convey complex technical concepts to a variety of audiences.
  2. Students will be able to analyze, interpret and describe the process of software engineering with respect to both large and small information systems, software systems, software development life cycles
  3. Students will be introduced to the preparation of a detailed problem definition incorporating needs analysis, market assessment, and scope and feasibility analysis for a desirable solution.
  4. Students will be encouraged to use a variety of tools in order to complete a project, managing the development, creating the design, and developing a solution.
  5. Students will demonstrate the ability to function effectively on a team.
  6. Students will work with a team of peers to analyze problems associated with a software solution, identify and define the requirements documents and models needed to determine possible solutions for the problem, and determine software and user-interface design.
  7. Students will refine presentation skills to prepare for the capstone sequence resulting in professional presentations.
  8. Students will be familiar with object oriented analysis and design issues using Unified Modeling Language (UML).
  9. Students will learn of ethical and professional issues related to software engineering

Grading Scales

Grades will be +/- for both Undergraduates and Graduate Students. Per assignment breakdowns are here:

Undergraduate

  • (Letter Grade : %)
  • A+ : 97 >
  • A : 93 – 96
  • A- : 90 – 92
  • B+ : 87 – 89
  • B : 83 – 96
  • B- : 80 – 82
  • C+ : 77 – 79
  • C : 73 – 76
  • C- : 70 – 72
  • D+ : 67 – 69
  • D : 63 – 66
  • D- : 60 – 62
  • F : < 60

Graduate

(Letter Grade : %)

  • A+ : 97 >
  • A : 93 – 96
  • A- : 90 – 92
  • B+ : 87 – 89
  • B : 83 – 96
  • B- : 80 – 82
  • C+ : 77 – 79
  • C : 73 – 76
  • C- : 70 – 72
  • F : < 70

Course Policies

Participation, out-of-class exercises and in-class quizzes

FALL 2020 PANDEMIC NOTE: PLEASE SEE THE STATEMENT ON PARTICIPATION IN MY EMAILS

Mastery of these topics is achieved through execution of the software engineering process. The course material and exercise sequences are designed to build a foundation upon which to successfully participate in a team-oriented software engineering project.

There will be periodic short quizzes in this course. These will be announced in class during the session before each quiz. It is expected that you are current on your lecture notes, readings and assignments from the week prior to each quiz. There will be no more than five quizzes throughout the semester. If you are not present for a quiz you will not get credit.

Each exercise and lecture topic builds upon the concepts and lessons of the previous days and weeks, and therefore they are each critical to the progression of the class. The solution to each exercise will be provided and/or discussed after its due date. For this reason, no late Exercises will be accepted. All exercises are designed and intended to be an individual effort, collaborative implementation or copying will result in a zero (0) on the exercise for all students involved. During lecture times, participation exercises and quizzes will be administered. These serve two purposes: to gauge the comprehension of the class regarding the recent lecture topics and concepts, and to survey lecture participation. These participation events cannot be made up when missed, resulting in a zero (0) grade.

Exceptions due to outside factors

Exceptions will be made to the above policies for only the following conditions: a) illness that is documented by a medical professional; b) pre-absence email notification to the instructor regarding illness, family related matters, career related matters. WARNING: information technology related problems/failures/challenges are not appropriate excuses for late work. As a student in a senior-level Computer Science course, it is expected that you are capable of mitigating the risks associated with technology!

Self Determination as a Learner

Learning is the act of acquiring new, or modifying and reinforcing, existing knowledge, behaviors, skills, values, or preferences and may involve synthesizing different types of information. The ability to learn is possessed by humans, animals and some machines. Progress over time tends to follow learning curves. Learning is not compulsory; it is contextual. It does not happen all at once, but builds upon and is shaped by what we already know. To that end, learning may be viewed as a process, rather than a collection of factual and procedural knowledge. Learning produces changes in the organism and the changes produced are relatively permanent.

Psychology, 2nd edition. pg. 264. By Schacter, Gilbert, and Wegner (2009, 2011). Worth Publishers.

As a learner (aka student) in a senior-level Computer Science course, _ it is expected that you are capable of problem solving, Internet-based research, and constructing your own creative solutions _ to problems presented by the course. You must be a motivated, self-sufficient learner; applying your own creativity and problem solving skills to the work assigned as part of this class. The teaching assistants assigned to the course are strictly available to help you work through conceptual learning of the course material, not resolve your technology challenges or simply tell you the answers. It is imperative that you engage your mind and thought processes during your work in this course, else-wise you are depriving yourself the opportunity to grow as a learner.

Graduate Student / Credit (CS 7320)

Students taking Software Engineering for graduate credit (CS 7320) will complete all the same work as the undergraduate students. Additionally, graduate students will be assigned further reading assignments related to position papers and emerging research in the field of Software Engineering. You will compose papers (or presentations) that are either multi-article compare and contrast reviews or single article critiques. These writings will be counted as part of the 35% course grade that is allocated to Writing Assignments. Furthermore, graduate students will complete extra design and development related to the semester group project.

Academic Dishonesty

  • _Academic integrity is fundamental to the activities and principles of a university.
  • All members of the academic community must be confident that each person's work has been responsibly and honorably acquired, developed, and presented. Any effort to gain an advantage not given to all students is dishonest whether or not the effort is successful.
  • The academic community regards breaches of the academic integrity rules as extremely serious matters.
  • Sanctions for such a breach may include academic sanctions from the instructor, including failing the course for any violation, to disciplinary sanctions ranging from probation to expulsion.
  • When in doubt about plagiarism, paraphrasing, quoting, collaboration, or any other form of cheating, consult the course instructor._

ADA Notice

Students with Disabilities:

  • If you anticipate barriers related to the format or requirements of this course, if you have emergency medical information to share with me, or if you need to make arrangements in case the building must be evacuated, please let me know as soon as possible.
  • If disability related accommodations are necessary (for example, a note taker, extended time on exams, captioning), please register with the Disability Center http://disabilitycenter.missouri.edu, S5 Memorial Union, 573-882-4696, and then notify me of your eligibility for reasonable accommodations. For other MU resources for persons with disabilities, click on Disability Resources on the MU homepage.

Intellectual Pluralism

  • _The University community welcomes intellectual diversity and respects student rights. Students who have questions or concerns regarding the atmosphere in this class (including respect for diverse opinions) may contact
  • the Departmental Chair or Divisional Director;
  • the Director of the_ Office of Students Rights and Responsibilities _(http://osrr.missouri.edu/);
  • or the_ MU Equity Office _(http://equity.missouri.edu/),
  • or by email at [email protected].
  • All students will have the opportunity to submit an anonymous evaluation of the instructor(s) at the end of the course._

Recording Course Activities

  • University of Missouri System Executive Order No. 38 lays out principles regarding the sanctity of classroom discussions at the university. The policy is described fully in Section 200.015 of the Collected Rules and Regulations. _ In this class, students are not allowed to make audio or video recordings of course activity unless specifically granted permission by Dr. Goggins _. However, the redistribution of audio or video recordings of statements or comments from the course to individuals who are not students in the course is prohibited without the express permission of the faculty member and of any students who are recorded. Students found to have violated this policy are subject to discipline in accordance with provisions of Section 200.020 of the Collected Rules and Regulations of the University of Missouri pertaining to student conduct matters.

Decreasing the Risk of COVID-19 in Classrooms and Labs

MU cares about the health and safety of its students, faculty, and staff. To provide safe, high-quality education amid COVID-19, we will follow several specific campus policies in accordance with the advice of the Center for Disease Control and Boone County health authorities. This statement will be updated as information changes.

  • If you are experiencing any COVID-related symptoms, or are otherwise feeling unwell, do not attend in-person classes and contact your health care provider and/or student health immediately. COVID symptoms include: fever greater than 100.4 or chills; cough, shortness of breath or difficulty breathing; fatigue; unexplained muscle or body aches; headache; new loss of taste or smell; sore throat; congestion or runny nose; nausea or vomiting; diarrhea.
  • We will all wear face coverings while in the classroom, unless you have a documented exemption due to a disability or medical condition.
  • We will maintain a 6-foot distance from each other at all times (except in specific lab/studio courses with other specific guidelines for social distancing).
  • We will enter the classroom and fill the room starting at the front, filing all the way across a row. When class ends, we will exit the row nearest to the door first; the instructor or TA will give the signal for the next row to exit, in the same manner.
  • Online office hours will be available for all students.
  • This course will provide pre-recorded lectures and not require student participation in the lecture sessions. The instructor will be present during lecture sessions in accordance with policy and their own health status.

Compliance with these guidelines is required for all; anyone who fails to comply will be subject to the accountability process, as stated in the University’s Collected Rules and Regulations, Chapter 200 Student Code of Conduct.

If an instructor has concerns about how a student is following COVID-19 policies and protocols, please report those concerns to the Office of the Dean of Students. You can fill out a COVID Safety Measures Reporting Form here: https://cm.maxient.com/reportingform.php?UnivofMissouriSystem&layout_id=38

By taking the above measures, we are supporting your health and that of the whole Mizzou community. Thank you in advance for joining me and your peers in adhering to these safety measures.