CS111A

Fall 2017

9:10am - 11am

ACRC, PC-Lab 1

Course Syllabus

Course Syllabus (subject to change throughout the semester)

The textbook used for this course and referenced in the Syllabus is on 2-hour reserve in the library

Miscellaneous Information

posted 8/30/17CCSF Coders, CCSF Hackers, CCSF Linux Users Group, CCSF Web Developers & Designers and CCSF Women Who Code are hosting 2 peer advising sessions on Wednesday and Thursday

Using Hills @CCSF for Completing Homework Assignments

Using repl.it for Completing Homework Assignments

Homework Submission

Results from Test 1

Test 2 is on Wednesday 10/25. Covers Chapters 3 (Decisions) and 4 (Loops)

Test 3 is on Wednesday 11/15. Covers Chapters 5 (Methods), Chapter 2 (String Manipulation) and Chapter 6 (Arrays)

Assignments

posted 8/20/17Practice Problem 1: Hour of Code Programming Puzzles due Wednesday 8/23

posted 8/22/17Practice Problem 2: Hello World due Wednesday 8/30 | raw

posted 8/27/17Practice Problem 3: Muni Ridership Calculator due Wednesday 9/6 | raw

posted 9/10/17Programming Lab 1: Time Calculator due Wednesday 9/20 | raw

posted 9/21/17Programming Lab 2: Rock Paper Scissors due Wednesday 9/27 | raw

posted 10/01/17Practice Problem 4: Jackalope Population due Wednesday 10/11 | raw

posted 10/10/17Programming Lab 3: Parallelogram Problem due Wednesday 10/18/17 | raw

posted 10/22/17Programming Lab 4: Consumer Loan Program due Monday 10/30/17 | raw

posted 10/29/17Programming Lab 5: Analyze Phrase due Wednesday 11/8/17 | raw

posted 11/13/17Programming Lab 6: Palindrome due Wednesday 11/16/17 | raw

posted 11/20/17Programming Lab 7: De-Dup Program due Wednesday 11/29/17 | raw

posted 12/1/17Practice Problem 5: Distance File due Wednesday 12/6/17 | raw

posted 12/1/17Extra Credit Lab 1: Theater Seating Chart due Wednesday 12/20/17 | raw

Course Notes

Mostly taken from Craig Persiko's CS111A course materials

posted 8/20/17Computer and Java Basics - Chapter 1

posted 8/22/17Simple Input and Output in Java - Chapter 2 Part 1

posted 8/27/17Calculations - Chapter 2 Part 2

posted 9/5/17Decision Structures - Chapter 3

posted 9/5/17DeMorgan's Law and Random Numbers - Chapter 3

posted 9/26/17Loops - Chapter 4

posted 10/15/17Methods - Chapter 5

posted 11/8/17Arrays - Chapter 6

posted 12/6/17File Input Output

Sample Programs

Chapter 2

HelloWorld.java | Simple console input

Echo.java | Using the Scanner class for console input

CalcFormatDemo.java | Demonstrates calcuations and formatting with printf

GradeAverage.java | Outputs average grade

StringDemo.java | Shows various ways to manipulate strings

Names.java | Solution to in class exercise (takes in names and outputs separately)

AvgWordLength.java | Typecasting example

StringDemo.java | String Manipulations

Busses.java | Using modulus functions

Chapter 3

Interest.java | Calculates interest on an investment at one of 2 rates

MoreInterest.java | If statements used to separate different scenarios with rates

BooleanApp.java | Booleans for multi-way if statements

SwitchGrades.java | Switch Statements

Names and Ages Part 2 | Solution to In Class Assignment which addresses quirky behavior of the Scanner library (The Scanner.nextInt method does not parse the last newline character of user input, and thus that newline is consumed in the next call to Scanner.nextLine.)

TimeCalcBetter.java

Chapter 4: Loops

Invest.java uses a loop to add up interest on an investment over time

InvestAgain.java: Variation of above Invest program that allows user to repeat the calculation as many times as user wants.

Hellos.java: Solution to in-class exercise repeating "hello" on screen

Retire.java calculates results of monthly retirement savings, using printf for formatting output

NestedControlStructure.java inputs and shows student info with if-else-if inside loop

NestedAlt.java: Alternate version of above using "break"

Here's a document summarizing and demonstrating best practices in code formatting.

AddMoney.java demonstrates switch statements, for loops, and boolean variables

Chapter 5: Methods

FunInterest.java demonstrates the definition and use of a method.

InflationBetter.java - Uses several methods, calculates inflation rate.

Groups.java - demonstrates using shared static class variables and output with nested loops.

GroupsBetter.java - Variation of above program, without shared static class variable for numGroups.

AddMoneyFun.java uses 2 methods with loops, switch statements, etc. (a variation of the AddMoney.java program above)

Blackjack.java uses several static methods and instance variables.

Chapter 6: Arrays

BasicArray.java - Inputs and averages an array of doubles.

ArrayElementArguments.java - Demonstrates how to pass an element of an array into a method.

ArrayParam.java - Demonstrates how array parameters work

ReturnArray.java - shows how to create an array in a function and return it

SearchGroup.java - Sequential search example, searches an array of student IDs to see if user-entered ID is in the array.

ArrayExp.java - Inputs and sorts an array of ints.

SortCommandLine.java Command-line argument variation of ArrayExp.java uses command-line to specify a list of names, searches that list to find a name.

QuarterlySales.java - a 2-Dimensional array example

Pixels.java - Models screen pixels with a 2-D array.

JaggedArray.java - Shows how a 2-D array can be jagged: have different numbers of columns for each row. Inputs test scores for courses - each course can have a different number of tests.

PixelDrawing.java: Solution to exercise #5. Demonstrates drawing with a 2-dimensional array of integers

Career Advice and Links

Mostly taken from Craig Persiko

Brief YouTube Video On the value of being able to communicate what you know. Less than 10 minutes.

Advice on Careers A compilation of resources and opportunities.