CENG453

Course Objectives:

At the end of this course, you will be able to:

  1. Use modern development tools, including version control systems, development environments, build and test automation, debugger, and static analysis tools
  2. Understand common design paradigms in object-oriented languages, GUIs, and the design patterns associated with these paradigms
  3. Use UML for software modeling
  4. Design and develop medium-scale concurrent interactive software systems
  5. Follow a design process from a reference architecture, to object model, and to implementation
  6. Apply design patterns to achieve quality attributes such as performance, extensibility and reusabil- ity
  7. Design and develop software for reuse (libraries, components, frameworks, and product lines)
  8. Be able to write thread-safe concurrent programs
  9. 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.)