ENES 171 Intermediate Programming Concepts for Engineers

This course will introduce students to intermediate principles of software development and will include high level languages, abstract data types, documentation, data structures, graphs, and dynamic memory allocation. Students work in software development teams on projects in the electrical and computer engineering fields. Program languages such as C and Java will be used in a version control environment to design and test code. Software development projects will involve relevant engineering topics such as modeling, microprocessors, robotics, cryptography, bioinformatics, embedded software, game programming, image processing, and wireless sensor networks. Before taking this course, students must have programming experience in a modern imperative language (e.g. C, C++, Java, Python, Ruby, etc.). That experience must include the development and implementation of abstractions to solve problems. 

Credits

4

Prerequisite

ENES 100; CMSY 141 with a grade of C or better or departmental permission. Pre- or corequisite: MATH 181

Hours Weekly

3 hours lecture, 3 hours lab weekly

Course Objectives

  1. Develop robust and extensible software through effective software engineering practices.
  2. Apply abstract data types and complex data structures.
  3. Demonstrate the ability to independently learn new languages and libraries.
  4. Create test suites and periodic builds, as a member of a team, using version control.
  5. Use tools common to programming such as text editors, compilers, link-editors, and debuggers.
  6. Demonstrate the ability to model software using standard documentation techniques.

Course Objectives

  1. Develop robust and extensible software through effective software engineering practices.

    This objective is a course Goal Only

    Learning Activity Artifact

    • Other (please fill out box below)
    • Programming project

    Procedure for Assessing Student Learning

    • Other (please fill out box below)
    • Project rubric
  2. Apply abstract data types and complex data structures.

    This objective is a course Goal Only

    Learning Activity Artifact

    • Other (please fill out box below)
    • Problem set

    Procedure for Assessing Student Learning

    • Other (please fill out box below)
    • Problem set presentation rubric
  3. Demonstrate the ability to independently learn new languages and libraries.

    This objective is a course Goal Only

    Learning Activity Artifact

    • Other (please fill out box below)
    • Problem set

    Procedure for Assessing Student Learning

    • Other (please fill out box below)
    • Problem set presentation rubric
  4. Create test suites and periodic builds, as a member of a team, using version control.

    This objective is a course Goal Only

    Learning Activity Artifact

    • Other (please fill out box below)
    • Programming project

    Procedure for Assessing Student Learning

    • Other (please fill out box below)
    • Project rubric
  5. Use tools common to programming such as text editors, compilers, link-editors, and debuggers.

    This objective is a course Goal Only

    Learning Activity Artifact

    • Other (please fill out box below)
    • Problem set

    Procedure for Assessing Student Learning

    • Other (please fill out box below)
    • Problem set presentation rubric
  6. Demonstrate the ability to model software using standard documentation techniques.

    This objective is a course Goal Only

    Learning Activity Artifact

    • Other (please fill out box below)
    • Problem set

    Procedure for Assessing Student Learning

    • Other (please fill out box below)
    • Problem set presentation rubric