View Descriptor
Descriptor Details
-
Descriptor Title
Introduction to Programming Concepts and Methodologies for Engineers
-
C-ID Number
120
-
Units
4
-
Date of Last Revision
10/12/2017 11:44:08 PM GMT+0000
General Description
Introduces (1) the basics of software development using a high level language utilizing programming and (2) the interface of software with the physical world (e.g., the use of sensors).
Prerequisites
Pre-Calculus (C-ID MATH 155)
Corequisites
None
Advisories
Basic knowledge of computer usage.
Content
I. Programming Fundamentals
A. Fundamental programming constructs
Minimum coverage time: 9 hours
Topics
- Basic syntax and semantics of a higher-level language
- Variables, types, expressions, and assignment
- Simple I/O
- Conditional and iterative control structures
- Functions and parameter passing
- Structured decomposition
Learning Outcomes
- Analyze and explain the behavior of simple programs involving the fundamental programming constructs covered by this unit;
- Modify and expand short programs that use standard conditional and iterative control structures and functions;
- Design, implement, test, and debug a program that uses each of the following fundamental programming constructs: basic computation, simple I/O, standard conditional and iterative structures, and the definition of functions;
- Choose appropriate conditional and iteration constructs for a given programming task;
- Apply the techniques of structured (functional) decomposition to break a program into smaller pieces; and
- Describe the mechanics of parameter passing.
B. Algorithms and problem-solving
Minimum coverage time: 6 hours
Topics
- Problem-solving strategies
- The role of algorithms in the problem-solving process
- Implementation strategies for algorithms
- Debugging strategies
- The concept and properties of algorithms
Learning outcomes
- Discuss the importance of algorithms in the problem-solving process;
- Identify the necessary properties of good algorithms;
- Create algorithms for solving simple problems;
- Use pseudocode or a programming language to implement, test, and debug algorithms for solving simple problems; and
- Describe strategies that are useful in debugging.
II. Programming Languages
A. Overview of programming languages
Minimum coverage time: 2 hours
Topics
- History of programming languages
- Brief survey of programming paradigms
- Procedural languages
- Object-oriented languages
Learning outcomes
- Summarize the evolution of programming languages illustrating how this history has led to the paradigms available today; and
- Identify at least one distinguishing characteristic for each of the programming paradigms covered in this unit.
B. Declarations and types
Minimum coverage time: 3 hours
Topics
- The conception of types as a set of values together with a set of operations
- Declaration models (binding, visibility, scope, and lifetime)
- Overview of type-checking
Learning outcomes
- Explain the value of declaration models, especially with respect to programming-in-the-large;
- Identify and describe the properties of a variable such as its associated address, value, scope, persistence, and size;
- Discuss type incompatibility;
- Demonstrate different forms of binding, visibility, scoping, and lifetime management; and
- Defend the importance of types and type-checking in providing abstraction and safety.
III. Interface with the Physical World
Minimum coverage time: 10 hours
- Introduction to basic software development tools
- Introduction to basic hardware interface development tools
- Modifying software provided to the students
- Demonstrating designs and implementations associated with the course topics
- Demonstrating success at implementing software that manipulates or responds to physical phenomena
- Demonstrating the use of systematic, basic QA procedures to evaluate design and implementation quality.
Learning outcomes
- Be able to use basic development tools and IDEs for simple software development interfaced with the physical world.
- Be able to understand software developed by others, be able to modify such software, and be able to validate the quality of the modifications.
- Be able to demonstrate the interplay between software and the physical world.
- Be able to follow simple software QA procedures.
Topics fulfilling these tasks and outcomes could include OOPS and other programming elements.
Lab Activities
No information provided
Objectives
At the conclusion of this course, the student should be able to:
- Design, implement, test, and debug a program that uses each of the following fundamental programming constructs: basic computation, simple I/O, standard conditional and iterative structures, the definition of functions, and the use of interfaces to the physical world;
- Use pseudocode or a programming language to implement, test, and debug algorithms for solving simple problems
- Summarize the evolution of programming languages illustrating how this history has led to the paradigms available today
- Demonstrate different forms of binding, visibility, scoping, and lifetime management
- Demonstrate how one may combine software and hardware components in order to respond to physical phenomena and manipulate the physical world.
Evaluation Methods
May include any or all of:
Exams
Quizzes
Programming Projects
Discussions
Class Presentations
Laboratory assignments
Textbooks
Savitch, Walter: Problem Solving with C++ Latest Edition
Descriptor Administration
-
Public Review Needed
No
-
Next Descriptor Review
No information provided
-
Resubmission Requirements for Courses
No information provided
-
Resubmission Deadline
No information provided
-
Comments
First course in a sequence of courses that is compliant with the standards of the Association for Computing Machinery (ACM). The course includes coverage of the interplay of software with the physical world.
-
Notes
No information provided
-
Keywords
No information provided
Delete Descriptor?
Are you sure you want to delete this descriptor?
Deleted descriptors cannot be restored.