COM311+(2012-13)

=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. It also handy to be able to use the more sophisticated data analysis tools, that often require a basic understanding of programming.===

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===

Software Resources

 * ===Download the Eclipse Java development tool (MacOS Cocoa64 version)===
 * ===Watch Eclipse Java introduction video===
 * ===Watch Java for Beginners video===

Reference Resources (eBooks)

 * ===Thinking in Java, 3rd Edition===
 * ===Java Basics===
 * ===1000 Java Tips===

Reference Resources (online)

 * ===Java basic tutorials===
 * ===Java GUI Tutorial===
 * ===Java code examples===

Instructional Videos
> === === > ==The first few projects will show you important programming techniques. They are purposely not graphical and are known as command-line application because they rely on simple text for input and output.== >>> ===To learn more about a specific component, search Youtube on how to install it. For example, "How to install a disk drive", "how to replace the motherboard", or "how to add memory"=== > ... >> === Part 2 - Consider the following when you check if the string is a valid number: ===
 * ==Download the Java series from user mikenku on Youtube (tutorial #4 through #30)==
 * ===Java is a high-level language, which means that commands perform high-level or complex actions. An example of a low-level language is assembler. If you want to see a sample "Hello World" application in assembler, watch this video. I think you will gain an immediate appreciation for the work that high-levels tools save you.===
 * ===If you want to learn a little about what goes on __inside__ a microprocessor, watch this video. In order to understand how a microprocessor works, you need to appreciate that it is based on binary numbers, which are base 2. There are a billions of binary numbers created from "gates", which can be thought of as electronic circuits. These "circuits" are combined to represent large numbers. These numbers are either data or instructions.===
 * ==Projects==
 * ===Project 1 - Introduction to programming===
 * ===Watch these videos about explore the inside of a PC: video1video2video3===
 * ===Watch the "Hello World" video and create the application in Eclipse===
 * ===Project 2 - Create an application using integer, float, and Boolean variables===
 * ===Part 1 - perform calculations using each type of variable===
 * ===Part 2 - convert between different types of variables (known as casting)===
 * ===Project 3 - Create an application using string variables:===
 * ===Part 1 - concatenate two strings===
 * ===Part 2 - compare two strings===
 * ===Part 3 - extract one character from a string===
 * ===Part 4 - explore length, indexOf, and substring methods===
 * === Assessment #1 ===
 * === Part 1 - Read a string from the user and validate that it is a number ===
 * === only one decimal point ===
 * === a leading minus sign (or no minus sign) ===
 * === only numeric characters (0..9) ===
 * === a comma every third place (if used) ===
 * === extra credit if you use a Regular Expression in your program ===


 * ===Project 4 - Create an application using a FOR loop===
 * ===Part 1 - print every fifth numbers from 1 to 100 (example: 1, 5, 10, 15, 20, 25, 30 ...)===
 * ===Part 2 - print every fifth number from 1 to 100, but __**only**__ if it is an even number (10, 20, 30 ...)===

Assessment #2

 * === Create an application using If and Switch logic ===
 * === Part 1 - determine the name of a football score based on points scored (1, 2, 3, 6, 7) ===

Assessment #3

 * === Create an application that uses nested For loops ===
 * === Part 1 - create the following seating chart using loop ===
 * === 1-1 1-2 1-3 1-4 1-5 1-6 1-7 1-8 1-9 ===
 * === 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 ===
 * === 3-1 3-2 3-3 3-4 3-5 3-6 3-7 3-8 3-9 ===
 * === 9-1 9-2 9-3 9-4 9-5 9-6 9-7 9-8 9-9 ===
 * === Extra credit if you format each row of the seating chart using letters (see below) ===
 * === A-1 A-2 A-3 A-4 A-5 A-6 A-7 A-8 A-9 ===
 * === B-1 B-2 B-3 B-4 B-5 B-6 B-7 B-8 B-9 ===
 * === B-1 B-2 B-3 B-4 B-5 B-6 B-7 B-8 B-9 ===


 * ===Project 5 - Introduction to arrays===
 * ===you re going to create an online ticketing system for the seating system you designed above===
 * ===loop for each row and seat and use a random number to "occupy" 20% of the seats===
 * ===20% is how many seats?===
 * ===loop for each "20% seat" and pick two random numbers to represent the row and seat (of the matrix)===

Assessment #4 - cash register
>>>> === For example: === >>>> === $10 paid for an item that costs $3.23 results in change of $6.77 in the following denominations: === >>>> === one five dollar bill === >>>> === one one dollar bill === >>>> === three quarters === >>>> === two pennies ===
 * === Use what you have learned (including the second part of the previous assessment) and write the logic for a basic cash register. ===
 * === get two numbers input (the decimal price of a product and the amount paid) ===
 * === Calculate the amount of change (amount paid - price of product) and the number of each bill and coin ===

>
 * ===Project 6 - Introduction to objects (classes)===
 * ===In this project, you will learn about using objects, which are useful for modular programming and modeling the real world. Modular programming makes it easier to share code with other programmers.===
 * ===Review the book object we defined in the collaborative document.===
 * ===Watch these videos: vid1, vid2, vid3===
 * ===Create a "virtual book" program that reads "pages" into an array and implements the following methods:===
 * ===display a page, page forward, page back, go to page nn, close book (navigate to cover)===
 * ===the main routine should loop and process input commands until the user wants to quit the program===
 * ===the book should have the following properties:===
 * ===title, author, ISBN, and copyright===
 * ===choose one of the following:===
 * ===method to bookmark pages - array of bookmark names [strings] and page numbers [integer]===
 * ===method to search each page for a string===