ICAPRG301A Apply introductory programming techniques Alan Kay (1940- ) Pioneer of Object Oriented programming • Wrote the first OO language, Smalltalk • Developed the prototypes for network workstations in 1970 at Palo Alto which Steve Jobs use to develop the Macintosh OS • Develop the concept of mobile computers (he called them Dynabook in 1970s) • Using Dynabook concepts he is currently working on the software for the $100 laptop program Quotes: The best way to predict the future is to invent it. People who are really serious about software should make their own hardware. A change in perspective is worth 80 IQ points. Technology is anything that wasn't around when you were born. If you don't fail at least 90 percent of the time, you're not aiming high enough. Possibly the only real object-oriented system in working order. (About Internet) Simple things should be simple, complex things should be possible. ICAPRG301A Week 1 Hello World ICAPRG301A Apply introductory programming techniques • First in a programming series • Help you with : Cert IV 1. ICAPRG414A Apply introductory programming in another language 2. ICAPRG406A Apply introductory object-oriented language skills 3. ICAPRG417A Apply mathematical techniques for software development Skill sets Basic Application Development Programmer Skill Set Application Development Specialist Skill Set Or just to become the next killer programmer… Don't worry about what anybody else is going to do. The best way to predict the future is to invent it.— Alan Kay ICAPRG301A Week 1 Hello World ICAPRG301A Apply introductory programming techniques What is programming? The official term is software engineering and it is the process of developing the code which will run on computers or computing devices. This code enables the devices to perform the actions which we require as users. Famous Programmers Bill Gates Mark Zuckerman Marcus Persson Rovio Mobile ???? wrote MS DOS operating system in 1982 in the language Assembler wrote Facebook in 2004 in the language PHP wrote Minecraft in 2009 in the language Java wrote Angry Birds in 2009 in the language Objective-C Started out learning this year…. Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program - Linus Torvalds ICAPRG301A Week 1 Hello World ICAPRG301A Apply introductory programming techniques Why learn programming? • To see if this is an area of real interest for you and maybe build a career • To gain a basic understand of how software works and why it often doesn’t work • To gain and understanding of what the development process actually is • In your job you will be working with software that is running on other software, you need at least a basic understanding of what software actually is and what it does • To gain an appreciation of how hard it really is to get something that does truly “just work” learning to program is an iterative process of removing the magic from computing ICAPRG301A Week 1 Hello World ICAPRG301A Apply introductory programming techniques Which is the best language? The question is often asked and makes no sense. Its like asking which is the best tree. There are many languages and all have their uses, all are good for some tasks and all have problems in some areas. Which is your best foot? Could you still do things if you only had that foot? There is a site called 99-bottles-of-beer.net which is a collection of computer programs which output the famous song. At present there are 1436 different languages on the site, many in a variety of versions. We will be teaching you programming, not just how the program in one particular language. In this unit we will use the language Python. Python is a lot easier to teach to students programming - Guido Van Rossum, Python Benevolent Dictator for Life ICAPRG301A Week 1 Hello World ICAPRG301A Apply introductory programming techniques Basics Language Types There are two basic types of computer languages, Procedural and Object Orientated. Procedural languages develop programs that are much like a recipe or reading a book. They start at the beginning and move step by step until they reach the end. Almost all languages can be used procedurally but some languages (like VBScript, Javascript , BASIC, Pascal, COBOL) are designed that way. Object Orientated languages use the concept of a class. This means they can just exist and it is up to the user how they operate, very much like the way you use the Internet or a word processor. Most modern languages are designed around the use of classes (including Java, Python, C++). There are many other definitions of computer languages including data-structured (SQL), fourth-generation (Progress 4GL), Scripting (Lua), Assembly (Emu8086) etc Python works well as a simple procedural language but can also be used as an OO language. ICAPRG301A Week 1 Hello World ICAPRG301A Apply introductory programming techniques Getting Started The process of software development (writing programs from scratch) involves a number of steps. 1. Writing the code. Here you use a text editor to develop the set of instruction that following the rules of the language. 2. Run the code. Here the instructions are converted into something that a computer can understand (ie a series of 1 and Os). 3. Debug the code. There will be errors so you need to look at what has happened and work out if it is what you wanted. 4. Rinse and repeat. Early programmers had to do all this manually and it can still be done that way. However in the last 10 years programs called Integrated Development Environments (IDE) have changed that as all these processes can be done in the one place. Python is simple enough that it does not require an IDE, however we will use a basic one for convenience. ICAPRG301A Week 1 Hello World ICAPRG301A Apply introductory programming techniques Getting Started This course will take you through much of what you need to start learning the language Python. However if you want to go further or are looking for another set of lessons to help you understand the language or a concept there are plenty of tutorials around. Some of the better ones are: New Boston Udacity Reddit Google http://thenewboston.org/ http://www.udacity.com/ http://www.reddit.com/r/learnpython/ http://www.reddit.com/r/Python/ http://code.google.com/edu/languages/google-python-class/index.html The best text book (and the one that will be used in the Cert IV) is Head First Programming published by O’Rielly. This book should be available at the CDU Bookshop. Google supports Python (the author of Python works for Google) so Google searches usually find plenty of help. Often coders ask questions of each other through code forums like Reddit and StackOverflow. ICAPRG301A Week 1 Hello World