Syllabus for

Software Engineering Solutions

COSC 381

(M/W 9:00-10:50, Pray Harrold 520 )

Instructor: Matt Evett ; Dept. Computer Science; Pray Harrold 511 
Tel: 734-487-1227
e-mail: mevett _AT_SIGN_ emich.edu;
online: canvas.emich.edu

Office Hours: T/Th 10:00-12:00 noon (Zoom) or by appointment. See the Syllabus link in Canvas for the Zoom link. The best way to contact me is by e-mail.

Prerequisite: COSC 211 and 231.

Textbooks:

Course Summary: Overview of software engineering as a discipline, and its application to deriving solutions to novel problems. Introduction to software life-cycle models, phases of the waterfall and agile development processes, version control, testing, UML, basic HCI, and project management.  Students will complete at least three projects in which they design and implement a software solution to a problem specified by “real-world” clients as simulated by case studies. There will homework and lab assignments, as well as a midterm and final examination.

Student Learning Outcomes:

 

1: Explain and use the primary aspects of software engineering.

1.1: Explain the role of a software engineer and software engineering in the development of software solutions.

1.2: Apply to multiple case studies a contemporary analysis and design approach, such as object-oriented analysis and design.

1.3: Analyze and compare various software development life-cycle methods that include requirements analysis, design, implementation, testing and maintenance. Describe the relationships between the life-cycle phases and processes.

1.4: Describe and compare alternative software process standards and processes (e.g. waterfall, incremental, spiral, prototyping, empirical, test-driven, and agile methods)

1.5: Explain the roles and responsibilities in a software team, and management issues of teams.

2: Demonstrate the use of software engineering techniques to model solutions to case studies that provide only informal problem specification.

2.1: Brainstorm alternative solutions, select from alternatives, and create designs and appropriate documentation using UML class and sequence diagrams and other appropriate methods for the problem domain. 

2.2: Analyze and create a requirements specification using scenarios, use cases, and use case diagrams from a set of customer needs.

3: Develop clear, concise, and sufficiently formal life-cycle artifacts including requirements, design, implementation, and test documentation for software systems.

3.1: Explain the motivation for defining sufficiently explicit requirements.

3.2: Use software models in the Unified Modeling Language (UML) to express and analyze software requirements, and designs, and guide implementation

4: Explain the value of construction technologies such as version control and design tools to assist the software development practice.  Use these tools to develop a software system.

4.1: Explain the purpose of version control and its application for managing software design or code artifacts.

4.2: Use software tools (such as ArgoUML,Dia, etc.) to create design artifacts, including UML diagrams.

4.3: Use version control in a team-based development of a software system.

5: Explain software design concepts and develop a software system using these concepts.

5.1: Describe concepts and strategies in software design including architectural design, detailed design, and user interface design.

5.2: Create UML class diagrams that represent a problem domain from a requirement specification.

5.3: Create UML sequence diagrams to express class behavior.

5.4: Evaluate alternative designs at an introductory level through reviews (e.g. review of class diagrams).

5.5: Describe and exemplify several design patterns (factories, functors, iterators, decorators, dependency injection, observers, etc).

6: Explain testing and quality assurance strategies.  Demonstrate the use of testing tools.

6.1: Distinguish between program validation and verification.

6.2: Distinguish among the different types and levels of testing (unit, integration, systems, acceptance, regression, black box, white box, end-to-end).

6.3: Describe test-driven design.

6.4: Develop and use a testing suite with an integrated testing tool (e.g. JUnit, Jasmine, Karma, EclEmma, etc.) for a software system under development.

Course Calendar:

The dates below are tentative. Actual due dates are always and exclusively found via Canvas. Beware due dates from 2023. If you see a due date before the Winter'24 semester, I have not yet assigned that work!!! The assignment may well change before I give it out (or I might not make the assignment at all), when I will set an actual due date.
 

Date Topics
1/8, 10 Introduction to software engineering, Software Development Processes, installing Cygwin or bash on Windows
MLK Day, 1/17

Ch. 2, software processes.  Using bash shell

 

1/22, 24

Bash, Code repositories and version control. Git and Github.

1/29, 31

Collaboration via Git, workflows

 

2/5, 7

Collaboration via Git and IDE's, Using an API, Group Project

 

2/12, 14 

 

Unit Testing, JUnit. Validation and verification strategies. Build to the Test.

 

2/19, 21

Ch 3 Introduction to Agile Development

Software Engineering Methodologies (scrums, code reviews, burndown charts, pair development, etc.)

2/26, 28

 Winter Break

 

3/4, 6 

More on agile, practicums.

Midterm Exam? 

Ch 4 Requirements Engineering

3/11, 13

Code coverage (EclEmma)

Collaboration tools (e.g. Kanban tables, Trello, etc.).

3/18, 20 

 Ch 5 System Modeling

Techniques for defining software designs. Presented with a case study that presents a problem to be solved, develop the design of a software solution.

State machines, system diagrams. 

Final Project Assignment

3/25, 27

Software Architecture Design, System testing, End-to-end testing. 

4/1, 3

Project Management (make, Ant, Maven, etc.).

Ch 6 Architectual Design

4/8, 10 Ch 7 Project Development
4/15, 17 Ch 8 Testing, Design patterns (factories, MVC, etc.)
4/24, 9:00-10:30 
Final Exam

Grading Policy:

The final course grade will be a weighted average of the grades received in each of the following categories, as specified: Assignments 60% (10% 1st group project, 20% final project, 30% other work), Midterm exam 19%, Final exam 19%, class participation 2%.

Tardiness Policy: Programming and other homework assignments will be due at the beginning of class. After that, assignments will be accepted through the start of the next scheduled class, but will suffer a full grade penalty. E.g., if a late programming assignment is worthy of an 'A', I will mark it a 'B'. Assignments more than one class late will not be accepted, and will receive a grade of 'F'. Missed assignments, and exams shall only be excused by a doctor's written note, verifying that the student was medically indisposed to participate on that day.

Attendance Policy: We're all grown-ups, when and whether you attend class is up to you. However, missed assignments shall only be excused by a doctor's written note, verifying that the student was medically indisposed to attend class that day. That said, study after study has shown that regular attendance is strongly correlated with better grades. I urge you to attend class as often as possible!!  Keep in mind, too, that class participation is part of the grading methodology.   

Grading of Programs: Programs shall be submitted either to the Canvas online "dropbox" corresponding to each assignment or via Github Classroom.  Submissions to Canva  will consist of a zip file of the source code or of an Eclipse project directory. The zip file should also contain a file named "README.txt", a simple text file, containing any directions I might need to run your program, as well as a description of any known bugs in the program. Github Classroom submissions will consist of the same content, but not as a zip file. Grading of programming assignments will reflect three factors, weighted as shown:

  1. (70%) Correctness -- does the program run correctly?
  2. (15%) Style -- does the code adhere to class documentation standards? Is the code indented properly? Are the variable names mneumonic? How well has the student followed the basic formatting characteristics for the language?
  3. (15%) Design -- is the program adequately decomposed (i.e., are the functions and procedures small enough to be comprehensible)? Are the class and structure definitions well chosen? How well has the student taken advantage of the language's capabilities?

Beware Canvas "Grades": I use Canvas to record your scores, not to calculate your grade.  Canvas may say that you have scored 85% of possible points.  This does not necessarily mean you are receiving a B in the course!  The methodology for determining your final grade is as described above.

Announcements and the Web Page:

Students should view Canvas regularly for announcements regarding programming assignments, readings, etc. I update Canvas frequently!

Beware of old due dates in Canvas: if a due date for an assignment is not during the current semester, I have not yet assigned, nor may I do so!  In addition, if I do assign that work, it may be altered from what is written at the beginning of the semester.

Zoom Stuff

(This section is included in the syllabus in the event that we have to switch to online mode later in the semester because of COVID.) I may record course lectures to be made available to other students in this course. As part of your participation in this course, you may be recorded. If you do not wish to be recorded, please contact me during the first week of class to discuss alternative arrangements.

Students may not record or distribute any class activity without written permission from me, except as necessary as part of approved accommodations for students with disabilities. Students with such accommodations must inform me before recording any class activity. Any approved recordings may only be used for the student’s own private use.

You are strongly encouraged to turn on your camera during Zoom classes so that I can better interact with you and the rest of the class. It is so much more like an in-person class to be able to see your classmates! If you are not going to have your camera activated, you are required to set up your Zoom profile so that, when your camera is inactive, Zoom displays your name and a photo of yourself. To do this, fire up Zoom and see the Profile tab in Settings.  Part of your grade is class participation. Being visible during class is an aspect of class participation.

If we are forced to switch to Zoom-based classes due to COVID, exams will be conducted using the Respondus Lockdown Browser. You will be required to use a video camera for this. The system will record video as you take exams and track the orientation of your face to the camera as a way to ensure that students are not referencing notes during exams. The system also locks out other applications from using your screen during the exam. If you do not have a camera, please reach out to me well before the first exam/test.

 

COVID-19 Situation

You should be able to find the latest requirements and recommendations regarding on-campus life at https://www.emich.edu/emusafe/.

Course Accessibility and Disability Statement

It is my goal that this class be an accessible and welcoming experience for all students, including those with disabilities that may impact their learning in this class. If anyone believes they may have trouble participating or effectively demonstrating learning in this course, please meet with me (with or without a Disability Resource Center (DRC) accommodation letter) to discuss reasonable options or adjustments. During our discussion, I may suggest the possibility/necessity of your contacting the DRC (240 Student Center; 734-487-2470; swd_office@emich.edu) to talk about academic accommodations. You are welcome to talk to me at any point in the semester about such issues, but it is always best if we can talk at least one week prior to the need for any modifications.

Other Resources

University Writing Center: The University Writing Center (UWC) offers writing support to all undergraduate and graduate students. In doing so, we value the diversity of our campus and honor all students and the languages they bring with them to the university.

Holman Success Center:  Provides Academic Support through a variety of virtual and in-person services.

University Library: Research support is available to all students, 24/7. This includes getting started with research, identifying sources to search, developing search strategies, evaluating resources, and more. See https://www.emich.edu/library/help/ask.php for all of the ways in which you can get help with research. Some University Library services have changed, and may continue to change, in response to the pandemic. Please check for current information at https://www.emich.edu/library/news/covid.php 

Student and Exchange Visitor Statement (SEVIS): For international students, the Student Exchange Visitor Information System (SEVIS) requires F and J students to report numerous items to the Office of International Students & Scholars (OISS)

Title IX: Title IX of the Education Amendments of 1972 prohibits discrimination on the basis of sex under any education program or activity receiving federal financial aid. Sexual assault and sexual harassment is a form of sex discrimination prohibited by Title IX. What you need to know about Title IX 

Academic Irregularities:

Students are required to attend to the University policy on academic dishonesty outlined in Sections V and VIII (Provisions Governing Acts of Academic Dishonesty) of EMU's Code of Community Responsibility (see the full policy at https://www.emich.edu/policies/index.php?p=8.1). In addition, collaboration among students in solving programming and homework assignments is forbidden, unless specifically allowed.  If I receive programs or homework assignments that are substantially equivalent, or which are not the original work of the student submitting the material, I will not hesitate to punish all involved parties to the fullest extent, up to and including assignment of a failing grade for the course, and referral to the Office of Judicial Student Services for possible punitive action at the University level, which may include expulsion from the University. In addition, the University and the Computer Science Department maintain policies regarding proper behavior on its computer systems. Failure to adhere to these policies can result in loss of computer privileges, and possible legal action.

The Computer Science Department maintains a plagiarism policy, which can be found on the department's web site. 

In addition to the articulated course specific policies and expectations, students are responsible for understanding all applicable university guidelines, policies, and procedures. The EMU Student Handbook is the primary resource provided to students to ensure that they have access to all university policies, support resources, and student's rights and responsibilities. Changes may be made to the EMU Student Handbook whenever necessary, and shall be effective immediately, and/or as of the date on which a policy is formally adopted, and/or the date specified in the amendment. Electing not to access the link provided below does not absolve a student of responsibility. For questions about any university policy, procedure, practice, or resource, please contact the Office of the Ombuds: 248 Student Center, 734.487.0074, emu_ombuds@emich.edu, or visit the website at www.emich.edu/ombuds. CLICK HERE to access the University Course Policies