Course and instructor information
Welcome to the Software Engineering Course
- Instructor: Jane Cleland-Huang
- Email: JaneClelandHuang@nd.edu
- Office: Fitzpatrick Hall, Room 354
- Phone: phone here
- Website: http://sarec.nd.edu
- Office Hours (Professor): Monday and Wednesday immediately after class. Tuesday 1.30pm-2.30pm, Wednesday 10.30am-12.00pm. Other times by request.
- Office Hours (TA: Jinfeng Lin): Monday and Tuesday, 3.00pm-4.00pm, Cushing 212
- Quick links: Lecture Materials    Schedule
Software development involves much more than programming. This course will introduce techniques that are needed to develop high quality, maintainable software systems.
The first six weeks will be a crash course in Software Engineering topics with an emphasis on software design and testing. Other topics will include requirements and agile development processes.
In the second part of the course you will practice these topics through applied learning in a group project. All examples and homework assignments will be completed using Java and Java FX; however, no prior knowledge of Java is expected. Plenty of sample code will be provided.
Students taking this class should gain software engineering skills in the following areas:
- Ability to design an elegant and maintainable Object-Oriented solution for a medium sized problem using basic Principles of Object-Oriented Design and proven Design Patterns.
- Ability to transform an Object-Oriented Design into high quality, executable code.
- Skills to design, implement, and execute test cases at the Unit and Integration level.
- Exposure to common process models including SCRUM, Waterfall, and the Unified Process, and hands-on experience with elements of the agile process including Jira and Github.
- Exposure to a variety of Software Engineering practices such as requirements analysis and specification, code analysis, code debugging, testing, traceability, and version control.
- Basic competency in Java and JavaFX language and environments.
Further, students will participate in a team project to develop a non-trivial application in Java. From this they will develop a portfolio.
Optional Reading Materials
All necessary materials will be provided in the lecture notes, code samples, and through weekly readings. However, some course materials have been taken from the following books, which students may choose to purchase:
- Head First Design Patterns: A Brain-Friendly Guide Freeman, O'Reilly Media, 2004. ISBN: 978-0596007126.
This is an easy-reading book which does a great job describing the purpose of different design patterns with examples.
- Java FX: Introducing JavaFX 8 Programming (Oracle Press) 1st Edition, by Herbert Schildt
- Object-Oriented Design and Patterns, 2nd edition, Horstmann, John Wiley & Sons, 2005. ISBN: 978-0-471-74487-0 Provides a crash course in java and an introduction to design patterns. (Note: The book uses Swing instead of JavaFX, so the GUI parts are not relevant)
Software Development Environment
Java, Java FX Environment
In this course we will be working with Java. No prior experience with Java is expected or needed as we will learn as we go through the other material. Furthermore, I will provide
you with plenty of sample code for everything we learn. I will be using Eclipse Neon IDE; however, you may choose to use NetBeans or Intelli J instead. If you have
time over the break, you may wish to install your chosen IDE with Java FX prior to the start of the semester and run a simple Hello World application to make
sure the setup is correct. This will save you time during the first busy week of the semester. As we are also going to use Java FX, you could install both at the same time.
Please read all of your options first. In some cases you may find it easier to install the IDE (e.g. Eclipse) already bundleD with Java FX.
- Install Java SDK from the Oracle site here . Make sure to select the correct version corresponding to your OS. I am using
Eclipse IDE for Java Developers. If you need a different version for your project you can reinstall later.
- Install an IDE with Java FX For this course I'm going to use my favorite IDE (Eclipse); however, you may use NetBeans or IntelliJ if you prefer. Examples will be provided in Eclipse.
Here are some installation instructions:
Additional links will be added as needed during the course.
This course is divided into two parts. The first part of the course is lecture based and is designed to equip students with specific Software Engineering skills related to design, development, and testing.
Lectures will focus on Principles of Object Oriented (OO) Design, Modeling and Documenting OO design, testing, code quality analysis, and requirements. Materials can be found at the following links:
- Download a pdf describing the course schedule
- Downloadable course materials will be posted prior to each lecture.
- Homework assignments are downloadable from Sakai
Grades and Grading Policy
Weeks 1-7: Software Engineering with Java
Weeks 8-15: Final Project (Total 50 points distributed as follows:)
- Java Program #1 + SE Questions (5 points)
- Java Program #2 + SE Questions (5 points)
- Java Program #3 + SE Questions (5 points)
- Individual Mini Chips Challenge Project - Part A (5 points)
- Individual Mini Chips Challenge Project (with Game Jam) - Part B (10 points)
- Software Engineering (Non Programming) Assignment (5 points)
- Midterm Quiz (15 points)
Note: Under normal circumstances, all members of the team will receive the same grade for the project; however in extenuating circumstances, the instructor retains the right to award individual team members additional points or fewer points than other team members.
- Project UML Requirements and Design + Presentation (10 points)
- Deliverable # 1: Functionality + Unit Tests (10 points)
- Deliverable # 2: Functionality + Unit Tests (10 points)
- Group Presentation (5 points)
- Group Project Report (html or pdf) (10 points)
- Individual Retrospection (5 points)
|A: 95 - 100
||A-: 90 - 94.99
|B+: 87 – 89.99
||B: 83 – 86.99
||B-: 80 – 82.99
|C+: 77 – 79.99
||C: 73 – 76.99
||C-: 70 – 72.99
Late homework penalties will be strictly
enforced. There will be a 20% penalty for any homework not turned in exactly by 5.00pm on its due date. Any homework turned in more than 24 hours late will receive a zero.
Sample solutions will be posted approximately 24 hours after homework is due. You need to plan ahead to complete your homework if you will be out of town.
Under exceptional circumstances, i.e. extreme sickness etc, you will need to discuss with the instructor and a make-up assignment may be arranged. This needs to be done prior to the homework deadline if humanly feasible.
This class follows the binding Code of Honor at Notre Dame. The graded work you do in the first phase of the class must be your own. For Software Engineering projects, you will work as a member of a team
and the work that is performed must represent the effort of team members only. In the case that you re-use open-source code in your project, you must provide full attribution to the source. Further, in the spirit of the Honor Code,
all team members are expected to make full contributions to the project and to correctly describe the contributions they have made.
During the first half of the Semester, and for all project presentations in the second half of the semester, this class will be recorded. You may find recordings on Sakai under "Echo360" or "Penopto". The purpose of the recordings is
to enable people who miss class for legitimate reasons (such as an interview or sickness) to catch up on materials; however, if course attendance drops, the recordings will be discontinued. Please be aware that your voice may be recorded during class; however,
recordings are for purposes of students in this course only.