CENG453 SPECIAL TOPICS IN COMPUTER ENGINEERING: SOFTWARE CONSTRUCTION

Course Code:5710453
METU Credit (Theoretical-Laboratory hours/week):3 (3.00 - 0.00)
ECTS Credit:6.0
Department:Computer Engineering
Language of Instruction:English
Level of Study:Undergraduate
Course Coordinator:Assoc.Prof.Dr. HANDE ALEMDAR
Offered Semester:Fall Semesters.

Course Objectives

By attending this course, the students are expected 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 reusability
  • 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

Course Content

Development of a complete software system based on available reference architectures; best practices in development; contemporary development environments and tools; architectural styles; concurrency; design patterns; libraries and frameworks;development of interface mechanisms including services and APIs;GUI design and implementation;design for reusability; component implementation; unit,component and system testing


Course Learning Outcomes

Upon successful completion of the course, the students will

  • be able to use the selected integrated development environment tool and git version control system proficiently
  • be able to design GUI for applications in Java
  • be able to develop web services with data persistance using Java
  • use a UML tool for software modeling
  • develop an end-to-end software system with enterprise level standards using Java
  • learn at least 6 major design patterns
  • learn at least 3 modern libraries, components, frameworks.
  • write thread-safe concurrent programs in Java
  • write test cases and conduct automated tests for software they develop 

Program Outcomes Matrix

Contribution
#Program OutcomesNoYes
1An ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics
2An ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors
3An ability to communicate effectively with a range of audiences
4An ability to recognize ethical and professional responsibilities in engineering situations and make informed judgments, which must consider the impact of engineering solutions in global, economic, environmental, and societal contexts
5An ability to function effectively on a team whose members together provide leadership, create a collaborative and inclusive environment, establish goals, plan tasks, and meet objectives
6An ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions
7An ability to acquire and apply new knowledge as needed, using appropriate learning strategies