COM311+(2011-12)

=COM311 - Introduction to Programming= ===Computer programming is a great skill to know - even if you are not going to be employed as a programmer. It helps build the logic portion of your brain and is helpful when you need to process information.===

Policies and Procedures

 * 1) ===This is a project-based class and effort is important. Think of it like art class. You must create some initial work before the art teacher can help you. Sitting with a blank canvas makes it difficult for the teacher to help.===
 * 2) ===Projects are graded using a simple rubric===
 * 3) ===A for projects that meet __all__ of the requirements __and__ include extra capabilities===
 * 4) ===A- for projects that meet __all__ of the requirements===
 * 5) ===B for projects that meet __most__ of the requirements===
 * 6) ===C for projects that meet __some__ of the requirements===
 * 7) ===Grades below a C are for incomplete projects and a lack of effort===
 * 8) ===Have fun and be creative===

Projects

 * ===Project 1 - This project is designed to show that computer are very powerful, especially at doing repetitive tasks. Unfortunatley, computers do not understand English and so we must communicate using a specialized tool (called a development tool). Computers are also annoyingly precise and logical. They do not understand abstract concepts like "a lot" or "a little". This means that programmers have to be explicit when writing programs. On the other hand, programs are like cooking recipes. There are many different ways to achieve the same result.===
 * ===Project 1a - Introduction to Computer Commands requirements:===
 * ===Install Turtle Art on your computer (link)===
 * ===Use Turtle Art to write your first and last name===
 * ===Use formatting to embellish the writing===
 * ===Project 1b - Reflection on Your First Program requirements:===
 * ===request to become a member of the class wiki (link)===
 * ===Write a papagraph about your first program (Project 1a) and post it on the webpage with your first name. Was TurtleArt easy to use? Was the program easy to construct? Do you think TurtleArt can be used to create all types of programs (why or why not)?===
 * ===Project 2 - Introduction to Computer Loops and Logic requirements===
 * ===We are going to use the more advanced features of TurtleArt to create graphic art.===
 * ===Download and open this TurtleArt reference document (link)===
 * ===Create a program in TurtleArt to draw a congruent hexagon (6-sided figure with equal sides and angles)===
 * ===Create a program in TurtleArt to draw a congruent hexagon (using the first page of the TurtleArt reference document (from above)===
 * ===Write a papagraph about your using loops and post it on the this wiki on the webpage with your first name. Compare and contrast the hexagon program with the one that uses a loop.===
 * ===Feel free to experiment with the programs in the TurtleArt reference document===
 * ===When you have a solid understandign of loops and logic, use TurtleArt to create a graphic art picture of your own===
 * ===Project 3 - Converting a Visual Program to Code requirements:===
 * ===We are going to use the graphic art program (created in Project 2) and convert it to another development tool that is similar to TurtleArt. TurtleArt uses a programming language called Logo, but you are insulated from having to use the langauge directly. The developers of TurtleArt made it easy by creating puzzle pieces to represent the language commands. In this project, we are going to convert (known as porting) it to run in ACS Logo. ACS Logo is also a Logo-based development tool, but you interact with the language directy.===
 * ===Downloadand install ACS Logo from this website===
 * ===Also download the Command Reference and User Guide for reference===
 * ===Recreate the graphic art program from Project 2 in ACS Logo.===
 * ===Does the program work the same? Compare and contrast TurtleArt and ACS Logo as a development tool (write your thoughts on the class wiki).===
 * ===Project 4 - Introduction to Gaming requirements:===
 * ===Based on the conversation we had about programming the other day, I thought that it would be interesting to program a few games. Game development is generally very difficult is only attempted after building a solid programming background. We are also going to learn to develop games by building upon what others have done. Scratch has a large user community that has shared over 2 million Scratch programs. We are going to find interesting Scratch-based games, figure out how they work and make them better. No sense re-inventing the wheel.===
 * ===Register, download and install Scratch from this website===
 * ===Search the Scratch website for games. The website allows you to play the game on their website. Download __five__ interesting games.===
 * ===Download these two PDF files with Scratch documentation:===
 * ===[|Scratch Help Screens]===
 * ===[|Learning2ScratchDraft]===
 * ===Project 5 - Individual Project:===
 * ===This project requires you to learn how to use a "real" programming tool called Live Code from Runtime Revolution.===
 * ===Click on this link and you will be asked to create an account and the product will start to download automatically.===
 * ===E-mail Mr. Faig for a key that will convert the 30-day trial to a paid license.===
 * ===At the start of the second quarter, we will learn Live Code.===
 * ===After gaining a working knowledge of Live Code, we will work on your independent project (see my notes on your wiki page)===
 * ===Watch these LiveCode Video Tutorials===
 * ===Try these LiveCode Hands-on Tutorials===
 * ===[|Hello_World_.pdf]===
 * ===[|Scripting_a_button.pdf]===
 * ===[|Working_with_text.pdf]===
 * ===[|File_and_Folders_Part_1.pdf]===
 * ===[|Getting_Started_-_Files_and_Folders_Part_2.pdf]===
 * ===For your project, you will need to know how to do the following:===
 * ===Add text to a textbox===
 * ===Change the background of a text box===
 * ===Highlight a textbox by changing the border===
 * ===Read each line of a file===
 * ===Put each line into an array (Split command)===
 * ===Loop through an array and look for a specific value===
 * ===Grab a webpage from a website, put it into a variable, and extract the homework assignments===