Software Engineering I

EECS 448, Spring 2018

Announcements


Course Details

Lectures Monday, Wednesday, Friday 8:00am - 8:50pm, LEEP2 2415
Labs Section 1: Monday 3:00pm - 4:50pm, Eaton 1005D
Section 2: Thursday 12:30am - 2:20pm, Eaton 1005D
Section 3: Friday 3:30pm - 5:20pm, Eaton 1005D
Instructor Prof. Alex Bardas
Office: 2040 Eaton Hall
Office Hours: Wednesday 9:30am - 11:30am, and by email appointment
: alexbardas ku edu
Teaching Assistant Kurt Slagle
Office: 3025 Eaton Hall
Office Hours: Tuesday 11am - 1pm, Thursday 11am - 12:30pm, and by email appointment
: k287s129 ku edu

Technical Support

If you experience any problems with lab equipment or your EECS account, contact the Engineering Technical Support Center immediately. Please be polite and as detailed as possible: Ticket Form

Syllabus

Check the "Syllabus" section on a regular basis since its content is subject to change throughout the semester.

Course Description (from the Catalog)

This course is an introduction to software engineering, and it covers the systematic development of software products. It outlines the scope of software engineering, including life-cycle models, software process, teams, tools, testing, planning, and estimating. It concentrates on requirements, analysis, design, implementation, and maintenance of software products. The laboratory covers CASE tools, configuration control tools, UML diagrams, integrated development environments, and project specific components.

Prerequisites

EECS 268 and Upper Level Eligibility

Textbook

Roger S. Pressman, Software Engineering - A Practitioner's Approach, 8th edition, McGraw-Hill 2015. ISBN-13: 978-0-07-802212-8

Course Outcomes

This course has the following goals:

  1. Understand software engineering in terms of requirements, design, and implementation.
  2. Learn and practice software testing including unit testing, and acceptance testing.
  3. Produce a software design based on requirements, a software prototype to explore a particular design, and conduct coherent testing and documentation;
  4. Work effectively in a team and deliver a software product (includes a demo and presentations).
  5. Learn and use version control.

Important Dates

See the KU Registrar for important dates involving adding, drops, and refund information.

General Course Information

Course-Related Questions: You will be free to develop on any platform and in any language you want, but you are responsible for learning new languages or features. The TA will help with labs, but cannot provide support for all possible languages and platforms.

Development Environment: You are required to maintain source control via GitHub. For most work, you may choose any language or platform you wish for assignments, but you must provide a GitHub depot of your source code.

Attendance: Attendance will be taken randomly throughout the semester. Three unexcused absences or three zeros on lab assignments will result in a failing grade for this course.

Announcements: You are responsible for all announcements we make in class, such as information about exams, projects, changes in the syllabus, etc.

Academic Integrity - Addressing Cheating and Plagiarism

Cheating and Plagiarism will not be tolerated and will be treated severely whenever found. Unless an assignment explicitly states otherwise, all work submitted for credit must be the student's own and is subject to the provisions of the University of Kansas policies. Sharing your work or copying is cheating, and submitting a work that is not all yours is also considered cheating. Any cheating will result in an F for the course for all parties involved. Reports of such detected academic misconduct will also be made to your major department, school/college, and university, which oftentimes will result in more serious sanctions. Students should review the university policy on Academic conduct. "Academic integrity is a central value in higher education. It rests on two principles: first, that academic work is represented truthfully as to its source and its accuracy, and second, that academic results are obtained by fair and authorized means. Academic misconduct occurs when these values are not respected. Academic misconduct at KU is defined in the University Senate Rules and Regulations." -- KU Student Affairs

Important! Many coding problems have may have solutions online, copying these solutions is not only detrimental to your education, it is plagiarism, which is a violation of the KU academic code.

From Section 2.6.1 of the University Senate Rules and Regulations: Academic misconduct by a student shall include, but not be limited to, disruption of classes; threatening an instructor or fellow student in an academic setting, giving or receiving of unauthorized aid on examinations or in the preparation of notebooks, themes, reports or other assignments; knowingly misrepresenting the source of any academic work; unauthorized change of grades; unauthorized use of University approvals or forging of signatures; falsification of research results, plagiarizing of another’s work; violation of regulations or ethical codes for the treatment of human and animal subjects; or otherwise acting dishonestly in research.

Citing Sources: If you use any code, such as a library or existing codebase, you must cite it. Not doing so is considered plagiarism and is considered cheating. If you add to an existing work, if your own code, you must make this know in your documentation.

Grading

Points Distribution.

Labs 20%
Exams 30%
Projects and related assignments 45%
Quizzes and class participation 5%
Grading scheme. (The instructor also intends to curve raw scores at the end of the semester)
A 90% +
A- 88% - 89%
B+ 86% - 87%
B 80% - 85%
B- 78% - 79%
C+ 76% - 77%
C 70% - 75%
C- 68% - 69%
D+ 66% - 67%
D 60% - 65%
D- 50% - 59%
F   0% - 49%
Exams:

Compiling Requirement: All code must compile. Any code that does not compile will not be graded, and hence receive zero credit. You must develop good coding practices to ensure that your code is always in a working state.

Labs: The purpose of the labs is to give you an opportunity to explore different topics, tools, or skill sets that will be useful when it comes to developing your projects. Your lab grade will be based on your attendance, participation, and completion of lab assignments.

Late Policy: All late work will receive a 20% per calendar day penalty. Whether it's a second late or a day late, whether it's a team project or a solo assignment. No exceptions. In case a solution will be made available by the instructor, late submissions will no longer be accepted.

Appeals: Should you wish to appeal a grade that you have received on a laboratory assignment, exam, or anything else, you must do so within one week of receiving the graded item. In the case of items such as exams which are handed back in class, you will have one week from the day they were handed back in class, regardless of whether you were in class that day. For the midterm and the final exam, you will have one week from the day class grades are posted to appeal.

Projects: All projects are team based. You will be given lots of freedom in projects with respect to language and platform, but warning: Not the TA nor the instructor will play the role of technical support for your team on your projects. When you pick a language or platform you and your team are responsible for learning how to debug and solve problems in that language or on that platform. Each project is a large amount of work that every member must contribute to equally. More details will be provided as projects are assigned.

Grade Responsibilities: This course uses Blackboard mainly for storing and displaying the grades. When explicitly directed by the instructor or TA, Blackboard may be used for uploading assignments. All written exams are graded by the professor and handed back in class. If you have not received a grade you were expecting it is your responsibility to email your TA and the professor no later than 10 days past the due date of the grade in question.

Accommodations for Students with Disabilities

The Academic Achievement & Access Center (AAAC) coordinates academic accommodations and services for all eligible KU students with disabilities. If you have a disability for which you wish to request accommodations and have not contacted the AAAC, please do so as soon as possible. They are located in 22 Strong Hall and can be reached at 785-864-4064 (V/TTY). More information can be found on the Student Access Services website. Please contact the instructor privately in regard to your needs in this course.

Expectation of Classroom Conduct

The instructor, Alexandru G. Bardas, considers this classroom (lectures and labs) to be a place where you will be treated with respect as a human being - regardless of gender, race, ethnicity, national origin, religious affiliation, sexual orientation, gender identity, political beliefs, age, or ability. Additionally, diversity of thought is appreciated and encouraged, provided you can agree to disagree. Activities within the University of Kansas community, including this course, are governed by the Code of Student Rights and Responsibilities. It is the instructor's expectation that ALL students experience this classroom as a safe environment.

Concealed Carry. Individuals who choose to carry concealed handguns are solely responsible to do so in a safe and secure manner in strict conformity with state and federal laws and KU weapons policy. Safety measures outlined in the KU weapons policy specify that a concealed handgun:

Acknowledgments & Notice of Copyright

Some of the course materials are adapted from previous versions of the class taught by Dr. Fengjun Li and Dr. John Gibbons. All lectures and course materials carry a copyright of Alexandru G. Bardas and/or other authors. Pursuant to the University of Kansas’ Policy on Commercial Note-Taking Ventures, commercial note-taking is not permitted in EECS448 - Software Engineering I (Spring 2018). Lecture notes and course materials may be taken for personal use, for the purpose of mastering the course material, and may not be sold to any person or entity in any form. Any student engaged in or contributing to the commercial exchange of notes or course materials will be subject to discipline, including academic misconduct charges, in accordance with University policy. Please note: note-taking provided by a student volunteer for a student with a disability, as a reasonable accommodation under the ADA, is not the same as commercial note-taking and is not covered under this policy.

Schedule

NOTE: Schedules are tentative and subject to change.

Course Schedule

Updated on a regular basis. Use your KU Online ID (all numeric is not correct) and password to access the slides and other materials.

Week 1

No Lab January 17 Overview
Deadline for forming project teams: Friday, January 26
slides
January 19 Introduction to Software Engineering
Reading materials:
  • Textbook - Chapters 1 and 2
slides

Week 2

Lab 1 January 22 Software Processes Overview
Reading materials:
  • Textbook - Chapter 3
slides
January 24 Process Models: Prescriptive vs. Agile Philosophies
Reading materials:
January 26 Prescriptive Models
Reading materials:
  • Textbook - Chapter 4

Week 3

Project Teams
Project 1
Lab 2
January 29 Project 1 Overview
Reading materials:
  • Textbook - Modularity overview - Chapter 12.3.5
slides
January 31 Process Models: Agile Models
Reading materials:
  • Textbook - Chapter 5
slides
February 2 Agile: XP, SCRUM, DSDM, AUP

Week 4

Lab used for team meetings February 5 Requirements Analysis
Reading materials:
slides
February 7 Requirements Analysis: SRS
Reading materials:
February 9 Requirements Modeling: Scenario-Based
Reading materials:
  • Textbook - Chapter 9
slides

Week 5

Proj.1 Presentations
EECS MySQL
Lab 3
February 12 Requirements Modeling: Scenario-Based (continued)
Project 1: team and self evaluations are available on Blackboard (under Assignments); deadline: Friday, February 16, at midnight
February 14 Project 1 presentations - part 1
Project 1 GitHub repositories
schedule
February 16 Project 1 presentations - part 2
Project 1 GitHub repositories

Week 6

Project 2
Lab 4
February 19 Project 2 Overview slides
February 21
February 23
* This article may be used towards earning extra credit (see Extra Credit section)

Extra Credit

You can earn an extra 10% on your final grade by identifying, reading, and summarizing 10 IEEE, ACM, and/or USENIX conference or journal articles. Other societies may also be accepted, please contact directly the instructor about this matter. Partial credit will also be awarded for less than 10 articles.
Requirements:

The instructor may also post some articles marked with * among the reading materials on the Course Schedule. These articles can be used towards earning extra credit.
Note! If you are not sure whether an article is appropriate for earning extra credit, write a few lines about why you think the article is related to the material covered in class and feel free to contact the instructor.

Note! You can access IEEE and ACM articles for free if you are connected to KU's network (e.g., wireless JAYHAWK network). Other societies such as USENIX may have all materials available for free from any network.

Important! Besides the instructor's and the TA's assessments, your summaries will be ran through software applications (Blackboard's SafeAssign and one other application) for identifying plagiarism. Read the articles, write your own summaries, and you will be rewarded.


Schedule of Exams

There will be two written exams in this course: midterm and final exam. The midterm will take place tentatively around the middle of the semester while the final exam will tentatively be scheduled in the last two weeks of class. If you take exams with the Academic Achievement & Access Center (more details in the syllabus), please email them at least 2 weeks in advance.


Tentative Roadmap

Week Week of Topic(s) Notes
1 1/15 Introduction No lab
2 1/22 Topic 1: Process Models (software processes), version control Lab 1: git
3 1/29 Topic 1: Process Models (agile development), Project 1 overview Lab 2: GitHub
4 2/5 Topic 2: Requirement Modeling (requirements analysis, scenario-based) Lab session used for team meetings.
Project 1 deadline: 2/12
5 2/12 Project 1 presentations, Topic 2: Requirement Modeling (UML) Lab 3
6 2/19 Topic 2: Requirement Modeling (class-based, behavior-based), Project 2 overview Lab 4
7 2/26 Topic 3: Project Management (management concepts, case-studies) Lab 5
Project 2 deadline: 3/4
8 3/5 Topic 4: Design Modeling (design concepts, architectural design),
Project 2 presentations
Lab 6
9 3/12 Midterm, Project 2 presentations, Project 3 overview No lab
10 3/19 Spring break No lectures, no lab
11 3/26 Topic 4: Design Modeling (component-level design) Lab session used for team meetings.
12 4/2 Topic 4: Design Modeling (design patterns) Lab 7
Project 3 deadline: 4/6
13 4/9 Project 4 overview, Project 3 presentations Lab session used for team meetings
14 4/16 Topic 5: Software Quality & Metrics (quality factors, software metrics) Lab session used for team meetings
15 4/23 Topic 6: Software Testing, final exam review Lab session used for team meetings.
Project 4 deadline: 4/27
16 4/30 Final Exam (Monday) and Project 4 presentations Project 4 presentations start.
Lab session used for team meetings.
17 5/7 Finals Week Remaining presentations during final exam time:
Tuesday, May 8, 7:30 - 10:00 a.m. in LEEP2 2415