Course Introduction ################### .. include:: /header.inc What we will cover ****************** In *Programming Fundamentals II* we will study C++, arguably the most important programming language in use today! * We will focus on the syntax of this language * We will learn about object oriented programming * We will build programs of moderate complexity This course focuses on learning C++ in some detail. It is intended for those students who intend to pursue a program involving writing many computer programs. Ideally, you already know the basics, so we will start off by examining the differences between C++ and the language you probably learned earlier. That language might have been something like Python, but other languages are possible. Prerequisites ************* You should already know something about programming * COSC1336 - Python * COSC1315 - C++ * this is not ideal, but possible with permission Some students will take this course after taking COSC1315. In the past, this was fine, but COSC1315 now is structured to serve those students who are not going to become programming professionals, so the focus is more on problem solving, and less on actual programming. If you are one of these, the start of this course might be a bit tough, but you should be fine with a bit more study. See me for help if you get stuck! How the class will run ********************** We will study a lot of code in this class. Most of the code will be simple, focusing on one concept at a time. All of the code found in these lecture notes will compile and run on any system with suitable build tools installed. (We will go over setting up those tools in our next meeting.) You will then apply the concepts we have studied in lab projects which will become increasingly bigger and more complex as the course progresses. For some of these projects, you will work in a team, programming in exactly the same way you will be working when you get out of school and launch your career! You are not going to be turned loose to pound away on your computer "blasting code" to complete these projects, hoping it works. Instead, I am going to reel you in, and try to show you development techniques that are battle-tested, and hugely important in the software development world today. If you code the way I am going to teach you, you will have much more fun in this class, and struggle much less. Don't worry, this approach will not hurt! In fact, it is so simple, it is almost ridiculous! Baby Steps ========== We will use a technique called "Baby Steps" to write code * Start off with something that works * Identify one small new feature you need to add to your code. * Think how you will prove that this new feature works. * Make a small change to the code to add that new feature. * Prove that it works properly. * Repeat until you are done. There is another name for this technique: *Test-Driven Development*. We will test your code as you write it! Source Code Management ====================== Your code will not just live anywhere you like on your development system. Instead, we will learn how to manage a development *Project*. Your project will be located in a logical place on your system, and that place will be managed by a neat development tool named Git_. We will go over this tool in some detail in class. Tools of the trade ****************** Here is a snapshot of the tools we will be using to write code. All of these are in common use today, in real development projects world-wide. The nice thing about the set of tools I plan to show you is that they are all top quality tools, and all are free! In fact, you can install and use these tools on any system you like. I regularly use all of them on the big three: Windows, Mac OS-X, and Linux! * We will not use an IDE * We will use basic tools (editors and language processors) * We will use some you have not seen before: * Make * Git_ and GitHub_ * Programmer's editor Code will be found on GitHub **************************** * All code shown in class will be available on my GitHub account * You can explore the steps in the development of the example code * These will appear as "branches" in the code The class GitHub_ is at https://github.com/rblack42/cosc1337.code