Problem Solving and Programming I
Revised: October 2024
Course Description
Problem-solving and algorithm development using an object-based programming language;
functions, control structures, collections, and objects.
Prerequisite & Notes:
- Prerequisite: The completion of, or concurrent enrollment in MATH 146 or MATH 153.
- 4 Credit Hours
- Required for major, required for minor.
Learning Outcomes
Students, by the end of this course, should be able to
- Create original, non-trivial programs utilizing both the procedural and object-oriented
paradigms in a high-level programming language.
- Create original, not-trivial programs where variables, functions, decision structures,
iteration, collections, class definitions, and objects are implemented.
- Understand and use good design principles, style, and documentation.
- Test their program and identify and correct program errors using a program debugger.
Text
Stuart Reges, Marty Stepp, Allison Obourn, Building Python Programs, Pearson, 2018.
Grading Procedure
Grading procedures and factors influencing course grade are left to the discretion
of individual instructors, subject to general university policy.
Attendance Policy
Attendance policy is left to the discretion of individual instructors, subject to
general university policy.
Course Outline
- Introductory Concepts
- Integrated Design Environments (IDEs), input and output, variables, data types, expressions,
style, documentation, and libraries.
- Functions
- Function definitions, return values, parameters, scope, lifetime, input and output
formatting.
- Control Structures
- Boolean operators (and, or, not),decision structures (if statements, if/else statements,
nested if statements), and exceptions. Iteration using for loops, while loops, the range function.
- Collections
- Storing data with 1-D and 2-D lists. Topics include constructing, populating, accessing
(including with iteration), modifying collections, aliasing, and list copy (shallow
and deep).
- Objects
- Object oriented programming (OOP) design, creating classes and instance objects, utilizing
class attributes and methods.
- Advanced Programming Topics (Time Permitting)
- Tuples, nested iteration, dictionaries, and recursion.
- Testing (Time Permitting)
- Unit testing, and test automation.