Quinn's 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 Fall 2019 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 Assignment 1: "Microworld Problem Solving" Programs to create images in the Nonrepresentational Painting World (NPW) and sonic sequences the Modular Melody World (MMW). RedCross code + RedCross demo | KanizsaSquare code + KanizsaSquare demo | Dots code + Dots demo | ThreeFigureMinuetThing code + ThreeFigureMinuetThing demo | MinuetFigureListener code + MinuetFigureListener demo | AfterJSB code + AfterJSB 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" Practice with writing programs involving arithmetic expressions and shapes from NPW, as well as posting output generated by these programs to your worksite. ExpressionsThing code + ExpressionsThing demo | ShapesThing code + ShapesThing demo |

Lab5 "An Interpreter Featuring Loop Forever and Selection" Writing a sequence of three interpreters, involving programs that recognize and respond to commands, through the display of dots of various colors. Interpreter1 code | Interpreter2 code | Interpreter3 code + RandomDot demo + InputDialog demo + HelpMessage demo + ErrorMessage demo |

Lab6 "Functions and Commands" Programs that feature functions and commands, where functions are defined as methods that return a value, and commands are defined as methods that perform some action. SurfaceAreaOfCube code + SurfaceAreaOfCube demo | Balloons code + Balloons demo | AlternateBalloons code + AlternateBalloons demo |

Programming Assignment 3: "Shapes World Problem Solving" A series of four programs in the context of NPW that make use of the shapes functionality of the NPW world, but not the painter functionality, as well as the utilization of placing the executable code in only the main method. WorkArea code + WorkArea demo | WhiteArea code + WhiteArea demo | YellowSpace code + YellowSpace demo | ShippingContainer code + ShippingContainer demo |

Lab7 "String Thing" Programs to illustrate some basic character string processing functionality. StringOps code + StringOps demo | StringThing code + StringThing demo |

Lab8 "Array Play" A series of three featured programs, in which the first two reflect the basics of array creation and array element referencing, and the third features array processing, which involves finding the solution to the relatively realistic problem of reading words from one file and writing them in reverse order to another file. Primes code + Primes demo | Streets code + Streets demo | ReverseCopy code + ReverseCopy demo |

Lab9a "Simple List Processing" A series of three featured programs that are dedicated to aquanting the user with basic concepts and mechanisms associated with the ArrayList. Primes code + Primes demo | Streets code + Streets demo | ReverseCopy code + ReverseCopy demo |

Programming Assignment 4: "Nonrepresentational Artistic Expressions" A series of several separate Java programs, in which all but one are in the context of the Nonrepresentational Painting World (NPW), that, except for the one exception, will make use of both the painter functionality and the shapes functionality of the world. TextRectangles code + TextRectangles demo | CircleOfSquares code + CircleOfSquares demo | HirstSquares code + HirstSquares demo | HirstDots code + HirstDots demo | SimpleDots code + SimpleDots demo | Invention1 code + Invention1 demo | Invention2 code + Invention2 demo | Stella code + Stella demo |

Lab9b "List Processing with Streams" A series of two featured programs that perform common processing tasks on list structures, where both programs produce the same output, but are constructed in very different ways, one focusing on explicit for loops, and the other using streams to accomplish the same tasks. ArrayListProcessing code + ArrayListProcessing demo | StreamArrayListProcessing code + StreamArrayListProcessing demo |

Lab10 "Establishing and Using Classes" A series of two featured programs that help the user gain familiarity with modeling classes of objects, a die in regards to order and top in this case, as well as gaining additional practice with creating and using computational objects, and translating mechanically from a for statement to a while statement. Die code | Roller code + Roller demo |

Programming Assignment 5: "Three List Interpreters" A series of three separate Java programs, two featuring arrays and one featuring an ArrayList object, which all pertain to the storage and manipulation of lists. NumberList code + NumberList demo | WordList code + WordList demo | WordList code + WordList demo |

Lab11 "Modeling Objects with Classes" A series of two programs that allow for practice with the process of writing a class to model a person, utilizing instance variables, constructors, methods, and ultimately the implementation of a Java interface for the established class. Person code + PersonSpecification code | PersonDemo1 code + PersonDemo2 code | PersonDemo1 demo + PersonDemo2 demo |

Lab12 "Grapheme to Color Synesthesia" A featured program that simulates grapheme to color synesthesia, taking the form of an interpreter, where two parallel arrays are utilized for color mapping, and Strings and arrays work together to perform the essential elements of the computation. The simple painter class easily supports such graphics processing. GraphemeToColorSynesthesia code + GraphemeToColorSynesthesia demo text + GraphemeToColorSynesthesia demo remap |

Programming Assignment 6: "Chromesthesia" A program requiring the construction of three variants of a Java Main Class called Chromesthesia, and three corresponding variants of a Java Class called Pitch. In the process, students will gain additional practice in incremental programming, class definition and use, and array processing, in the context of a program featuring a simple musical knowledge representation through the modeling of a fascinating cognitive phenomenon- that of chromesthesia. Chromesthesia Version 0 code + Pitch Version 0 code | Chromesthesia Version 1 code + Pitch Version 1 code | Chromesthesia Version 2 code + Pitch Version 2 code | InputBox demo + Canvas demo |

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