3 credit/unit hours – Three hours of lecture weekly; one term

This is an introductory course in structured programming logic. Students will learn to analyze problems; define data using simple data types and arrays; and create algorithmic solutions using basic control structures (sequence, selections, loops) and functions.

Students learn to systematically break down a problem into manageable parts; plan and design logical solutions; and write effective, structured, and well-documented instructions. Emphasis will be on problem-solving approaches (algorithms) and the fundamental concepts and programming techniques common to modern computer languages including variable assignment, expressions, input/output statements, loops, if-then-else and case constructs, functions, arrays, etc. The concepts learned in this course are applicable to multiple modern programming languages.

Learning Objectives

  • Describe the software development life cycle;
  • Describe how security has to be a consideration from the point of initial design and throughout the lifecycle of a product;
  • Analyze problems and design structured solutions;
  • Create and apply simple data types and arrays;
  • Identify common coding errors (e.g., buffer overflow and integer errors) that lead to insecure programs;
  • Create algorithmic solutions using basic control structures (sequence, decisions, loops) and functions;
  • Discuss the importance of input validation and write correct input validation code;
  • Compile, execute, and run simple programs;
  • Describe the importance of secure and responsible programming; and
  • Conduct a personal code review (focused on common coding errors) on a program component using a provided checklist

Main Topics

1.0 Overview of Computers and Logic
2.0 Comparison of Programming Languages
3.0 Number Systems/ASCII (American Standard Code for Information Interchange)
4.0 Program Structure
5.0 Modules, Hierarchy Charts, and Documentation
6.0 Writing a Complete Program
7.0 Loops
8.0 Arrays/Lists
9.0 Validating Input
10.0 Modularization Techniques
11.0 Object-Oriented Programming Concepts
12.0 Programming Graphical User Interfaces (GUIs)
13.0 Software Development Life Cycle
14.0 Ethics and Intellectual Property
15.0 Globalization and Collaboration