|
Description Syllabus Policies Quizzes Lab info Coding Standard Grading
This is where you check for news and information regarding recent additions (assignments, announcements, etc) to this site. The latest revision will be put at the bottom of the list.
10/1: Updated due date for WordCounter v1
9/24: Updated instructions for Lab 3
9/9/2019: preliminary syllabus for fall 2019
Note: Although lectures and labs are indicated on different days, we will invariably mix lecture and lab together across both days.
Lectures:
Section 021: Tuesday - 10:00am to 11:50am in
DH445
Section 041: Tuesday - 1:00pm to 2:50pm in DH445
Labs:
Section 021: Thursday - 10:00am to 11:50am in
DH445
Section 041: Thursday - 1:00pm to 2:50pm in DH323/DH445
As stated in my general course policies, attendance is mandatory for all lectures and labs. Email me when you foresee yourself to be absent. If you miss a lab, you will receive a 0 grade for that assignment. Be sure to read the entire document for all relevant policies that apply to this course.
As a CE, CS, or SE major, you've previously taken CS or SE courses in computer programming and data structures. With this background, you have a basic understanding of how simple Java applications are constructed using Eclipse. But what kinds of tools are used to create "real" applications, and how do you use them together?
This course provides an introduction to the Software Engineering Tools and Practices - a look at a typical approach software engineers create applications in practice. Topics include requirements analysis, high-level design, detail-level design, UML modeling, code generation, application building, and revision management. Laboratory assignments provide an opportunity for students to develop an understanding of these tools and how how they are used in actual practice.
Please consult the Course Catalog for detailed objectives.
We have provided urls to various sources of information - both internal and external websites. The Reading Assignments contain the links to these sites. In addition to those, an SE2030 Wiki and and Enterprise Architect Wiki have been created for this course.
As implied by the course title, you will be introduced to and use several new software tools for design, implementation, building, testing, and version control. All of these application tools are free for education use. You can find links to the various applications' download sites throughout the syllabus below.
You should already have a copy of Enterprise Architect (EA) on your laptop. The latest
version on the Software Center is version 13, so you should upgrade to that version if
you don't already have it. You need a software license key to run it, which you
can also find under the "additonal information" link. Don't install more recent
version of EA (that you might find on the web) since we don't have licenses for
those.
Syllabus
Week | Day | Topic | Reading/Homework | Lab |
1 | L1 |
Introduction to the course
UML Review |
Install/Upgrade Enterprise Architect 13 (see note above) Homework:
Using EA to create class diagrams Tutorial: Creating class diagrams using Enterprise Architect |
Lab 1: Application Design Due via Blackboard by end of Thursday lab. |
L2 |
UML Review, continued |
|||
2 | L1 |
UML Sequence Diagrams Sample code: SampleApp.pdf
Class diagram:
Sequence diagrams: |
Read:
Sequence Diagrams Video: Sequence Diagrams with EA
Configure EA for
Code Engineering |
Lab 2:
Program design
using UML
Quiz 1 - UML Class diagrams and relationships with EA 13
|
L2 |
Code Engineering with Enterprise Architect: Generating Java code from
UML models and generating UML models from Java code Round-trip synchronization of UML models from Java source
|
You must have a JDK installed on your laptop, if not Install Java SE Development Kit 10 Install Eclipse IDE for Java Developers Select latest 64-bit version for Windows. |
||
3 | L1 |
Introduction to Version Control Download: Git cheat-sheet |
https://www.codecademy.com/en/courses/learn-the-command-line
Install/Configure Git
Practice: Worksheet 2 |
Due via BItbucket as described in lab instructions
Quiz 2 - Generating Java code with EA 13 |
L2 |
Version Control configuration and use: Git/Bitbucket Cloning an existing repository (git clone) Tracking, Staging, Committing using git add, git commit, and git push Managing merge conflicts (git push, git pull, git difftool) |
Read: Pro Git: 2.1, 2.2, 2.4 (skim 2.3) | ||
4 | L1 |
Reverting using
git reset,
git checkout Design reviews Project work - 1st integration |
Read: Pro Git: 2.5 (Working with remotes) |
Lab 4: Team development using Git Due in dev branch of BItbucket by 8:00am Tuesday 10/8/2019 Tagging using
git
tag |
L2 | Project work - 2nd integration | |||
5 | L1 |
Introduction to Unit
Testing using JUnit Sample code: |
Reference: JUnit Assert class API |
WordCounter demos during lab Due in lab5_junit branch of BItbucket by 8:00am Tuesday 10/15/2019 |
L2 |
Quiz 3 - Command Line and Git basics (use of Git Cheat-sheet permitted) Building JAR files Sample code: JARDemo.zip UIHelper.zip |
Read:
Building and executing JAR files Read: Building JAR files - Sun tutorial |
||
6 | L1 |
Automated build tools: ANT Using ANT to build a JAR file inside
Eclipse |
Read: Running JUnit with ANT Read: Creating ANT Scripts Ref: ANT Task Overview |
Lab 6: Application Revision,
JUnit testing, and Deploying applications as JAR files
|
L2 |
Quiz 4 - JUnit concepts |
Read:
Intro
to Use Cases Read: Use Cases, ten years later
|
||
7
|
L1 |
Requirements coverage via Use Cases Use Case Template for in-class exercise |
Read:
Driving Design with Use Cases |
Lab 7: Use cases and high-level design
Use Case Template Due via BItbucket by 8:00am Tuesday 10/29/2019
|
L2 |
High-level design: Use
Case Textual Analysis |
Read: Driving Design: The Problem Domain Read: Driving Design: Top 10 Use Case Mistakes |
||
8 | L1 |
Low-level design: Domain Modeling Quiz 5: Requirements Analysis |
Read:
Successful Robustness Analysis |
Lab 8:
High-level design/Detail
design
|
L2 |
Data representation with XML XML parsing |
Sample Code: Parser.zip Parser Class Diagram |
||
9 | L1 |
State Machines |
GPS Parser State Diagram Homework/Sample Code: Lamp.zip Read: EA State Diagram tutorial |
Lab 9: Implementation, continued Final GPS app due in dev branch of BItbucket by 8:00am Tuesday 11/12/2019 Test files:
InvalidGPX.txt
gps-bad times.txt
GPSTest1.gpx
LoganPass.txt
|
L2 |
project work Quiz 6: XML data representation |
|||
10 | L1 |
GPSApp Demonstrations Course/Instructor Evaluation |
GPS app due in dev branch of BItbucket by 8:00am Tuesday 11/12/2019 |
|
L2 |
Quiz 7:
State Machine exercise State Diagram: Stoplight.pdf Code: Stoplight041.zip SOLUTION: Stoplight_solution.pdf Course outcomes / Review Course/Instructor Evaluation (alternate) |
|
||
11 |
Final Exam Monday Nov 18, 2019 11:00am - 1:00pm Room L311 (section 021) Room L310 (section 041) Computer Required |
My general course policies apply to this course.
A quiz will be given approximately once per week as posted above. No make-up quizzes will be given.
Note that this algorithm indicates how a grade will be determined for students who have successfully demonstrated mastery of the course objectives. An acceptable level of success in meeting all course objectives is a prerequisite for a passing grade in the course.
Criterion | Weight |
Quizzes | 30% |
Labs | 45% |
Final Exam | 25% |
All source code submitted must use JavaDoc commenting conventions and meet the minimum documentation standards below:
The beginning of each source file should contain:Each public class method should contain the following documentation:
Private class methods do not have to be documented nearly as thoroughly (since the methods are only used within the class), although good practice would be to minimally comment any non-obvious code - for future maintenance by you or others.
Note that the labs constitute a significant part of your overall grade - a reflection of their importance in this course. Plan to devote a considerable effort in order to complete these labs successfully and professionally.
The labs for SE2030 are fairly simple programming assignments such as what you have been used to in, say, SE1021. They are not particularly challenging from an algorithmic standpoint; rather, they permit you to focus on their primary objective; that is: to help you develop a familiarity with practices and tools used by in professional software development.
Even so, as you begin to develop an understanding of using these elements, you will still have to expend a reasonable effort as you practice using these tools. You should probably expect to spend additional time outside of class to complete the assignments for the labs.
This page was last updated on 11/14/2019.