Credits: 3


Prerequisite: Permission of ENGR-Electrical & Computer Engineering department. And ENEE140 or CMSC131; or score of 5 on the A Java AP exam; or score of 4 or 5 on the AB Java AP exam; or satisfactory performance on the department's placement exam.
Corequisite: MATH140.
Restriction: Must be in Engineering: Electrical program.
Advanced programming concepts: coding conventions and style; pointers; dynamic memory allocation and data structures; linked lists; graphs; abstract data types; object-oriented design. There will be team-based software projects and group presentations.

Semesters Offered

Fall 2017, Spring 2018, Fall 2018, Spring 2019, Fall 2019, Spring 2020, Fall 2020, Spring 2021, Fall 2021, Spring 2022, Fall 2022, Spring 2023, Fall 2023, Fall 2024, Summer 2024, Spring 2024

Learning Objectives

  • Learn how to develop robust and extensible software through effective software engineering practices
  • Learn about object-oriented design and complex data structures
  • Learn the skills to self-teach other software development concepts in the future

Topics Covered

  • Advanced programming concepts: coding conventions and style, unit testing, separate compilation and makefiles
  • Pointers
  • Dynamic memory allocation
  • Structures
  • Linked list
  • Graphs and applications
  • Other dynamic data structures
  • Abstract data types
  • Object-oriented design
  • The Unified Modeling language (UML)

Learning Outcomes

  • Ability to apply knowledge of mathematics, science, and engineering (Moderate)
  • Ability to design a system, component, or process to meet desired needs (Significant)
  • Ability to to identify, formulate, and solve engineering problems (Significant)
  • Recognition of the need for, and an ability to engage in life-long learning (Significant)
  • Ability to use the techniques, skills, and modern engineering tools necessary for engineering practice (Significant)