In this course, we'll increase the level of complexity from the Programming Prep course and work on more meaningful exercises. We'll use a static code analyzer and learn to systematically approach a problem using pseudo-code. As we go through these programs, we'll point out important learning concepts like variable scope in methods, blocks, and the main program. After this course, you should have a good grasp of how to write simple programs and think in an imperative, step-by-step, logical fashion. You will also learn to do some basic debugging and trap tricky bugs, and learn to develop a temperament for debugging.