Assignment 0: Hello, World
The purpose of this assignment is to introduce you to programming in Java and familiarize you with the mechanics of preparing and submitting assignment solutions. You will learn to use the DrJava editor for writing, compiling, and executing programs, and the Dropbox system for submitting your solutions.
Installing the course software.
The introcs package includes everything that you need for this course:
the Java compiler and runtime, the DrJava development environment,
the course libraries, and tools
findbugs-introcs that you can use to review your work.
If you have problems installing the software, check with the preceptors or lab TAs; you can report issues on Piazza where we can determine what advice to give everyone.
Programming. Your job is to write additional short programs on your own. We'll assume that you have already created, compiled, and executed HelloWorld.java by following the instructions in the previous part of the assignment.
outputs% java HiFour Alice Bob Carol Dave
Hi Dave, Carol, Bob, and Alice.
% java SumThree 2 5 8 2 + 5 + 8 = 15
% java Ordered 10 17 49 true % java Ordered 49 17 10 true % java Ordered 10 49 17 false
This formula uses degrees, whereas Java's trigonometric functions use radians. Use Math.toRadians() and Math.toDegrees() to convert between the two.
% java GreatCircle 40.35 74.65 48.87 -2.33 // Princeton to Paris 3185.1779271158425 nautical miles
Write a program RGBtoCMYK.java that converts RGB to CMYK. Input three integers, red, green, and blue, from the command line. (The input values will never all be zero.) And print the equivalent CMYK values using these formulas:
Hint. Math.max(x, y) returns the maximum of x and y.
% java RGBtoCMYK 75 0 130 // indigo red = 75 green = 0 blue = 130 cyan = 0.423076923076923 magenta = 1.0 yellow = 0.0 black = 0.4901960784313726
Program style and format. Now that your program is working, go back and look at the program itself. Did you include a header that will tell the reader who wrote the program, and what it does? (Instructions for compiling or running the program are optional. The latter is especially useful when there are command-line arguments.) For full marks, your program should not only work correctly, but should conform to the recommended style and format so that it is easy to follow. Read Booksite Appendix B: Writing Clear Code. Follow the guidelines in the Programming Style section of the checklist.
Writeup. With each assignment you must submit a text file named readme.txt that is a narrative description of your work. Some weeks there are also analysis questions to complete. We provide a readme.txt that you should use as a template. Download this file and answer all questions in the space provided. We recommend editing this file in DrJava.
Treasure Hunt The next part of the assignment is to browse the COS 126 website. The address is: http://www.princeton.edu/~cos126. It is essential that you understand what's where and how to get to it. Part of this assignment is to do the Treasure Hunt on Blackboard, found under "Assignment 0 Materials".
Collaboration Policy Quiz. As indicated in the readme template, part of this week's assignment is to complete the Collaboration Policy Quiz. Read the COS 126 Collaboration Policy, then access the quiz on the "Assignment 0 Materials" area of Blackboard. You can re-take it as many times as you like, and you must re-do the quiz until you get all questions correct.
Questionnaire. Part of this assignment is to fill out the following brief questionnaire.
Submitting the assignment. The final part of the assignment is to submit HelloWorld.java, HiFour.java, SumThree.java, Ordered.java, GreatCircle.java, RGBtoCMYK.java, and readme.txt via the Web submission system called Dropbox. To do this, click the Assignments link from the course website; click the Submit link for that assignment; and (if you aren't already logged in) login using your OIT NetID and email password. Upload the required files, and click the Check All Submitted Files button. Your programs should compile without errors or warnings; if not, fix the problem and resubmit the appropriate files. (The dropbox runs a few basic checks; passing it doesn't guarantee your program is 100% correct.) Remember that every file you submit needs to have your name, netID, and precept number.
Getting help. If anything is unclear, don't hesitate to drop by office hours, post a question on Piazza or email us. We also recommend reading the checklist, which provides some clarifications and answers to frequently asked questions.
Challenge for the bored (not extra credit). Try to solve Ordered without using any of the four ordered-comparison operators (< <= > >=). Try to solve RGBtoCMYK without using Math.max(). You don't need to use if for either one. Even if you solve these, please submit your original simpler solutions, which are less likely to have bugs and are more transparent to read.