Thinking Like a Programmer
This course teaches non-programmers the thought process associated with programming. To program, one needs to be able to break a problem into smaller parts, tackle each part, and stitch all these together into a working program. While programming languages vary, it is important for non-programmers to start out with the correct fundamentals. This course provides a gentle introduction to programming that prepares students to learn a professional programming language like Java, C# or C++. This course is also recommended for Business Analysts looking to understand the kinds of problems that can be addressed effectively through automation.
- Learn a strategy for solving problems
- Represent programs using diagrams, models and pseudo-code
- Think in terms of choices and repeated actions
- Incorporate working storage into solution plans
- Learn data and control abstractions
- Take an object-oriented view
- Incorporate algorithms and data structures
- Designing enterprise applications
- Learn best practices in programming
Who Should Attend
This is a foundation course designed for people who have no prior exposure to programming. Business analysts, systems analysts, and developers entering new hire programs with a degree other than Computer Science should take this course. The course is also appropriate for people who will not program in their jobs, but need to guide/interact with programmers. Developers who have not programmed should take this course before taking the Essential Java/C#/C++ courses.
Knowledge of basic computer skills; for example, the ability to type text, copy files, and run programs.
Chapter 1: Computers and Automation
- What Is a Computer?
- What Is Programming?
- Why Businesses Need Programs
- Use Cases and Abstraction
Objectives: Understand that computers are programmable instruments, and much of their transformative power on industries comes in that flexibility. Programmers teach the computer how to do the things that users want. Understand that programming is writing out a set of directions, but also understand the difference between writing directions for a person and a computer program. Also understand that programs need to be tested and maintained; i.e., that programs have multiple audiences. Finally, the chapter veers into the business use of computers for automation.
Workshops: Finding the temperature in New York City; find door in an empty room; convert units in newspaper articles.
Chapter 2: Problem Solving Strategy
- What Is a Problem?
- Business Domain vs. Programming Language Domain
- Understanding the Problem
- Devising and Carrying Out the Plan
- Accessing Results
- Documenting Solution
Objectives: Introduces the idea of breaking a complex-looking problem into small enough pieces that the solution becomes obvious. Along the way, it introduces visual, mathematical, and verbal descriptions of solutions, the utility of design patterns, and the importance of testing, documenting, and refactoring solutions.
Workshops: Hiking trail problem (multiple stages); warn on expiring option.
Chapter 3: Representing Solutions
- Natural Language
- UML Diagrams
- Unit Tests
- Role of User and User Interface
Objectives: Expands on the visual, mathematical, and verbal descriptions in previous chapter, showing more formal ways of describing programs. At this point, the concept of objects and classes are introduced (in this course, all programs are object-oriented, hence we introduce objects before we introduce loops). The chapter contains an introduction to UML and the art of delineating precise steps and organizing them into higher-level modules. We then move on to the idea of unit testing, to test the designed objects. Finally, the role of user inputs and user interfaces is addressed, with an introduction to the idea of a wireframe.
Workshops: Annuity calculator; unit test of annuity calculator; wireframe annuity calculator user interface.
Chapter 4: Functional Toolkit
- Making Choices
- Keeping Track of Things
- Data Structures
Objectives: To become familiar with a programmer’s functional toolkit: statements, blocks, variables, conditions, loops, storage and data structures such as arrays, lists and maps. Along the way, we introduce variable initialization (constructors) and scope (fields vs. local variables).
Workshops: Train planning; train planning with loop; loading trucks; number guessing game; making change.
Chapter 5: Object-Oriented Programs
- Methods and Data
- Objects and Classes
Objectives: Learn to think in terms of objects, and how objects relate to modules and functions including the concepts of state, data integrity, and encapsulation. Understand the need for services and sessions. Then, we move on to common algorithms which are introduced as common solutions to programming problems: linear search, consolidating loops, library functions, greedy search and divide-and-conquer. The chapter introduces relationships between objects as a way of reuse and moves on to describe abstract methods and interfaces. Finally, the composite design pattern is introduced.
Workshops: OO design of alerting application; money transfer application; making change; snack vending machine; UML diagrams.
Chapter 6: Enterprise Application Design
- Presentation, Business and Integration Tiers
- Web Applications
- Web Services
- Characteristics of Computer Eco-Systems
Objectives: Learn the tools, infrastructure and typical designs of the larger software systems they will work on.
Workshops: If possible, schedule a speaker to demonstrate or talk about enterprise applications that form the core of the customer’s business.
Please Contact Your ROI Representative to Discuss Course Tailoring!