View Source

* CSE 5324 - Software Engineering: Analysis, Design, and Testing (Spring 2015)
* Section 001

h2. Class Meetings
* Time: Monday and Wednesday, 5:30 pm - 6:50 pm
* Location: ERB 103 (in the [Engineering Research Building|http://www.uta.edu/maps/map?id=ERB])

h2. Instructor
* [Christoph Csallner|http://ranger.uta.edu/~csallner/index.html]
* Office: ERB 554 (in the [Engineering Research Building|http://www.uta.edu/maps/map?id=ERB])
* Office hours: Monday and Wednesday, 2:45 pm - 3:45 pm
* Office phone: 817-272-3334
* Email: [mailto:csallner@uta.edu]

h2. TA
* [Mainul Islam|http://cseweb.uta.edu/~mainul/]
* Office: ERB 509 / ERB 513 (in the [Engineering Research Building|http://www.uta.edu/maps/map?id=ERB])
* Office hours: Tuesday and Thursday, 11:30 am - 12:30 pm
* Email: [mailto:mainul.islam@mavs.uta.edu]


h2. Syllabus

[Syllabus|^syllabus.pdf]


h2. Description of Course Content from Course Catalog

Motivations, principles, and goals of software engineering; technical aspects of software projects, including: review of structured analysis and structured design, emphasis on object-oriented methods of requirements analysis and specification, design, and implementation; software testing concepts; team project.


h2. Project Requirements

# Every aspect of your software project has to be fully family friendly. This means, no violence, etc. When in doubt, make it more family friendly or ask the instructor.
# Your software should run on the Google Android platform. This means, with your instructions, I should be able to run your code on the standard Android emulator I have installed on my machine. Similarly, with your instructions, your test cases should run on my standard JUnit installation, etc.
# Your software should be new and exciting.
#* New means that your software has to have some aspect that is completely novel. It is not enough to just copy and paste an example project from somewhere else. This does not mean you cannot re-use any existing code. Most real-world software engineering builds on some existing code. But it is important that you clearly document which parts are yours and which parts you re-use from another source.
#* Exciting means that your software should have some aspect that is exciting. Examples include that you write a game that is fun to play or you write some utility that is appealing in some form.
#* In the ideal case, the exciting aspect of your software is also new. In this case, you may become rich and famous \:)


h2. Timeline

* All deadlines are Monday 9 am.
* CL X = Chapter X in Craig Larman textbook.
* DK X = Chapter X in David Kung textbook.


{table-plus}
|| Day || Tentative Class Topic || Deadline ||
| 1/21 | Overview, syllabus | |
| 1/26 | Motivation, introduction [UML in practice|http://dl.acm.org/citation.cfm?id=2486883], Iterative process (CL 1, DK 2, [How to be a program manager|http://www.joelonsoftware.com/items/2009/03/09.html]), Inception (CL 2) | Form teams |
| 1/28 | Writing Center | |
| 2/02 | *Presentation, feedback* | Incept project |
| 2/04 | Walkthrough and review (DK 19.4, [BillG|http://programmersatwork.wordpress.com/bill-gates-1986/], [Simonyi|http://programmersatwork.wordpress.com/programmers-at-work-charles-simonyi/]) | |
| 2/09 | *Presentation, feedback* | Revise inception |
| 2/11 | Basics | |
| 2/16 | More basics, requirements (DK 4) | Review inception |
| 2/18 | *Quiz*, more requirements | |
| 2/23 | *UTA closed* | |
| 2/25 | *Alan Walker* | |
| 3/02 | *Presentation, feedback* | Iteration 1 |
| 3/04 | Use-Cases (CL 6, DK 7), more requirements | |
| 3/09 | *Spring Vacation* | |
| 3/11 | *Spring Vacation* | |
| 3/16 | Domain models (CL 9, 31; DK 5) | Review iteration 1 |
| 3/18 | *Quiz*, more domain models | |
| 3/23 | *Marc D. Marchand* | Homework 1 |
| 3/25 | More requirements (CL 10, 11, 32), architecture (CL 13, 33; DK 6) | |
| 3/30 | *Presentation, feedback* -- Code walkthrough | Iteration 2 |
| 4/01 | Tools | |
| 4/06 | Dynamic (CL 14, 15) & static design models (CL 16, 19) | Review iteration 2 |
| 4/08 | *Quiz*, more static design models | |
| 4/13 | Grasp principles (CL 17, 18, 25) | Homework 2 |
| 4/15 | Design by Contract ([Meyer92Applying|http://doi.ieeecomputersociety.org/10.1109/2.161279]) | |
| 4/20 | *Presentation, feedback* -- Code walkthrough | Iteration 3 |
| 4/22 | *Presentation, feedback* -- Code walkthrough | |
| 4/27 | Overloading and overriding | Review iteration 3 |
| 4/29 | *Quiz*, design patterns, testing (DK 20), [Student Feedback Day|http://www.uta.edu/ier/Surveys/sfs/students.php] | |
| 5/04 | *Final presentation* | Final deliverables |
| 5/06 | *Final presentation* | |
{table-plus}

[University Academic Calendar|http://www.uta.edu/uta/acadcal.php?session=20151]


h2. Resources

* [CSE-5324 Tools|CSE-5324 Tools]
* David Kung: Object-Oriented Software Engineering: An Agile Unified Methodology. McGraw-Hill, 2013.
* Craig Larman: Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development. 3rd edition. Prentice Hall, 2004. Available on the UTA network at [http://proquestcombo.safaribooksonline.com.ezproxy.uta.edu/0131489062|http://proquestcombo.safaribooksonline.com.ezproxy.uta.edu/0131489062]


h5. UML

* Grady Booch, James Rumbaugh, and Ivar Jacobson: The Unified Modeling Language User Guide. 2nd edition. Addison-Wesley, 2005. Available on the UTA network at [http://proquestcombo.safaribooksonline.com.ezproxy.uta.edu/0321267974|http://proquestcombo.safaribooksonline.com.ezproxy.uta.edu/0321267974]
* [Modelio open source UML modeling tool|http://www.modelio.org/]
* [Frequently asked questions|http://stackoverflow.com/questions/tagged/uml?sort=faq&pagesize=50]

h5. Java

* [Language specification|http://docs.oracle.com/javase/specs/]
* [Virtual machine specification|http://docs.oracle.com/javase/specs/]
* [Eclipse IDE|http://www.eclipse.org/]
* [Frequently asked questions|http://stackoverflow.com/questions/tagged/java?sort=faq&pagesize=50]

h5. Android

* [What is Android?|http://developer.android.com/about/index.html]
* [Hello, World|http://developer.android.com/training/basics/firstapp/index.html]
* [API|http://developer.android.com/reference/packages.html]
* [Google API|https://developer.android.com/google/play-services/index.html]
* Android virtual machine (Dalvik): [Bytecode|https://source.android.com/devices/tech/dalvik/dalvik-bytecode.html]
* [Frequently asked questions|http://stackoverflow.com/questions/tagged/android?sort=faq&pagesize=50]

h5. Other

* Automatic code analysis: [FindBugs|http://findbugs.sourceforge.net/]
* Test automation: [JUnit|http://junit.org/]
* Version control: [Subclipse|http://subclipse.tigris.org/]
* Project hosting, issue tracking, etc.: [Google Code|https://code.google.com/p/support/wiki/GettingStarted]
* Coding duels: [Pex for fun|http://www.pexforfun.com/]
* Program your phone on your phone: [TouchDevelop|https://www.touchdevelop.com/]