James' CS1 Work Site

This site represents work that I have done in support of my efforts to learn to program in the CS1 course at SUNY Oswego during the Spring 2022 semester. The materials will be temporally organized for the most part. Links to external sites that pertain to computer programming, problem solving, Java, Web development, and related matters will be placed after the personally created artifacts.

Course Work

Lab1 "Hello World! Hello You!" A first set of programming examples and exercises designed to establish a framework for learning to program. HelloWorld code + HelloWorld demo | HelloYou code + HelloYou demo

Lab2 "Hello Painter! Hello Composer!" A first set of programming examples and exercises designed to establish a framework for learning to program. BlueDot code + BlueDot demo | Dorothy code + Dorothy demo | BasicsListener code + BasicsListener demo | Melody code + Melody demo | Target code + Target demo

Programming Challenge 1: "Microworld Warmup" Programs to create images in the Nonrepresentational Painting World (NPW) and sonic sequences the Modular Melody World (MMW). RedCross code + RedCross demo | MysterySong code + MysterySong demo | MinuetFigureListener code + MinuetFigureListener demo

Lab3 "Establishing a CS1 Work Site" Setting up a Web site to house programs and demos and a few miscellaneous links.

Lab4 "Expressions and Shapes World Problem Solving" Programs that use arithmetic expressions to solve simple problems and provide computational solutions to simple geometric problems. ExpressionsThing code + ExpressionsThing demo | ShapesThing code + ShapesThing demo

Programming Challenge 2: "Microworld Problem Solving" Programs to create solutions to problems in the context of the Nonrepresentational Painting World (NPW) and the Modular Melody World (MMW). Kanizsa Square code + Kanizsa Square demo | Dots code + Dots demo | AfterJSB code + AfterJSB demo

Lab5 "An Interpreter Featuring Loop Forever and Selection" Programs that use the loop forever construct, multiway conditional construct, and break statements to interpret user commands and display dots of various colors in a window. Interpreter1 code | Interpreter2 code | Interpreter3 code + Random Colored Dot Demo + Input Dialog Box Demo + Help Message Dialog Box Demo + Error Message Dialog Box Demo

Lab6 "Featuring Functions and Commands" Programs that feature functions and commands, keeping in mind stepwise refinement. SurfaceAreaOfCube code + SurfaceAreaOfCube demo | Balloons code + Balloons Demo | Alternate Balloons code + Alternate Balloons demo

Programming Challenge 3: "Shapes World Problem Solving" Programs to create solutions to problems in the context of the Nonrepresentational Painting World (NPW) without painting. Messy Desk code + Messy Desk demo | White Space code + White Space demo | YellowSpace code + YellowSpace demo | ShippingContainer code + ShippingContainer demo

Lab7 "String Thing" Programs to get acquainted with character string functionality and writing character string processing code. String Ops code + String Ops demo | String Thing code + String thing demo

Programming Challenge 4: "Nonrepresentational Artistic Expressions" Programs to create solutions to problems in the context of the Nonrepresentational Painting World (NPW), with the exception of one. Working with objects, program modification, selection and repetition, and creativity from constraint. Text Rectangles code + Text Rectangles demo | Number 1 code + Number 1 demo | Hirst Squares code + Hirst Squares demo | Hirst Dots code + Hirst Dots demo | Simple Dots code + Simple Dots demo | Deterministic Invention code + Deterministic Invention demo | Nondeterministic Invention code + Nondeterministic Invention demo | Stella code + Stella demo |

Lab9a "Simple List Processing" Programs to get acquainted with ArrayList functionality, comparing ArrayList processing with array processing, and file IO. Primes code + Primes demo | Streets code + Streets demo | Reverse Copy code + Song Lyric file + Reversed Song Lyric file

Programming Challenge 5: "Three List Interpreters" Programs to play with list interpreters and continue learning about Arrays and ArrayList objects. Also utilized CommandReader functionality to read user input from the output dialog. NumberList code + NumberList demo | WordList code + WordList demo | WordList code + WorldList demo

Lab10 "Establishing and Using Classes" Two programs - one class that models a die, and a program to create and use Die() objects. Die model class code + Roller code + Roller demo

Lab11 "Modeling Objects with Classes" Writing a class to model a person and test programs to utilize these new classes and the methods defined within them. Person class code | PersonDemo1 code + PersonDemo1 demo | PersonDemo2 code + PersonDemo2 demo | PersonSpecification code

Lab12 "Grapheme to Color Synesthesia" A program that simulates grapheme to color synesthesia, through the form of an interpreter. Grapheme to Color Synesthesia code | Grapheme to Color Synesthesia demo

Programming Challenge 6: "Chromesthesia" A program that simulates the experience of a chromesthete by playing notes chromesthetically, illustrating the process of incremental programming. Chromesthesia0 code + Pitch0 code + Chromesthesia0 input box + Chromesthesia0 canvas | Chromesthesia1 code + Pitch1 code + Chromesthesia1 input box + Chromesthesia1 canvas | Chromesthesia2 code + Pitch2 code + Chromesthesia2 input box + Chromesthesia2 canvas |

Various external sites relating to course content

Java Notes | Think Java: How to Think Like a Computer Scientist | Java Examples | Oracle's Java SE Tutorial | WWW Consortium