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.
Credit only granted for: ENEE114 or ENEE150.
Formerly: ENEE114.
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

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)