CENG453
Course Objectives:
At the end of this course, you will be able to:
- Use modern development tools, including version control systems, development environments, build and test automation, debugger, and static analysis tools
- Understand common design paradigms in object-oriented languages, GUIs, and the design patterns associated with these paradigms
- Use UML for software modeling
- Design and develop medium-scale concurrent interactive software systems
- Follow a design process from a reference architecture, to object model, and to implementation
- Apply design patterns to achieve quality attributes such as performance, extensibility and reusabil- ity
- Design and develop software for reuse (libraries, components, frameworks, and product lines)
- Be able to write thread-safe concurrent programs
- Understand the importance of software testing and be able to perform unit test, module test and integration test mechanisms
Textbook
- Bertrand Meyer, Object Oriented Software Construction, 2nd Ed., Prentice Hall, 2007.
References
- Joshua Bloch, Effective Java, 3rd Edition, Addison-Wesley, 2017.
- B. Goetz, T. Peierls, J. Bloch, J. Bowbeer, D. Holmes, D. Lea, Java Concurrency in Practice, 1st Ed., 2006.
Prerequisites
CENG 350 Software Engineering
Grading
- Classroom Participation (10%)
- Term Project (50%)
- Midterm exam (15%)
- Final (25%)
NA Grade: You will get an NA grade if you have
- not completed the first 3/4 of the milestones for term project
- not taken the midterm exam without a valid excuse (i.e. an unanticipated and serious medical emergency or due to a death in the immediate family. Medical emergency should be documented by an official report signed and stamped by a medical doctor.)