Note: This is a miniassignment and the grading is automated. If you do not submit it correctly, you will receive at most half credit.

Similar documents
Note: This is a miniassignment and the grading is automated. If you do not submit it correctly, you will receive at most half credit.

Note: This is a miniassignment and the grading is automated. If you do not submit it correctly, you will receive at most half credit.

Tips from the experts: How to waste a lot of time on this assignment

Tips from the experts: How to waste a lot of time on this assignment

Tips from the experts: How to waste a lot of time on this assignment

Our second exam is Thursday, November 10. Note that it will not be possible to get all the homework submissions graded before the exam.

Our second exam is Monday, April 3. Note that it will not be possible to get all the homework submissions graded before the exam.

Com S 227 Spring 2018 Assignment points Due Date: Thursday, September 27, 11:59 pm (midnight) "Late" deadline: Friday, September 28, 11:59 pm

Tips from the experts: How to waste a lot of time on this assignment

Com S 227 Assignment Submission HOWTO

Com S 227 Spring 2018 Assignment points Due Date: Wednesday, March 28, 11:59 pm (midnight) "Late" deadline: Thursday, March 29, 11:59 pm

EE 422C HW 6 Multithreaded Programming

CS 116. Lab Assignment # 1 1

CMPSCI 187 / Spring 2015 Postfix Expression Evaluator

Announcements. 1. Forms to return today after class:

CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 3: SEP. 13TH INSTRUCTOR: JIAYIN WANG

15-110: Principles of Computing, Spring 2018

Assignment Submission HOWTO

Due: 9 February 2017 at 1159pm (2359, Pacific Standard Time)

BCIS 3630 Dr. GUYNES SPRING 2018 TUESDAY SECTION [JAN version] GRADER COURSE WEBSITE

CMPSCI 187 / Spring 2015 Hangman

CS 211 Programming Practicum Spring 2017

COP4530 Data Structures, Algorithms and Generic Programming Recitation 3 Date: January 20 & 22, 2009

Be sure check the official clarification thread for corrections or updates to this document or to the distributed code.

You will not be tested on JUnit or the Eclipse debugger. The exam does not cover interfaces.

Due Friday, March 20 at 11:59 p.m. Write and submit one Java program, Sequence.java, as described on the next page.

You must bring your ID to the exam.

ASSIGNMENT 5 Objects, Files, and a Music Player

CMPSCI 187 / Spring 2015 Hanoi

CMPSCI 187 / Spring 2015 Implementing Sets Using Linked Lists

Lab 1: Setup 12:00 PM, Sep 10, 2017

Project 1 Computer Science 2334 Spring 2016 This project is individual work. Each student must complete this assignment independently.

CSSE2002/7023 The University of Queensland

Initial Coding Guidelines

ASSIGNMENT 5 Objects, Files, and More Garage Management

CS 241 Data Organization using C

CIT 590 Homework 5 HTML Resumes

CS 211 Programming Practicum Fall 2018

Programming Standards: You must conform to good programming/documentation standards. Some specifics:

CMPSCI 187 / Spring 2015 Sorting Kata

Due Date: Two Program Demonstrations (Testing and Debugging): End of Lab

CS 211 Programming Practicum Spring 2018

Web API Lab. The next two deliverables you shall write yourself.

Lab 3: Call to Order CSCI 2101 Fall 2017

CMSC 201 Spring 2019 Lab 06 Lists

CSCI544, Fall 2016: Assignment 2

King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department

Project #1 rev 2 Computer Science 2334 Fall 2013 This project is individual work. Each student must complete this assignment independently.

Hangman YEAH Hours. Thursday, February 14, 7:30 9:00PM Andrew Tierno

CSCI 1100L: Topics in Computing Spring 2018 Web Page Project 50 points

ECE Object-Oriented Programming using C++ and Java

Writeup for first project of CMSC 420: Data Structures Section 0102, Summer Theme: Threaded AVL Trees

Lab 3: Call to Order CSCI 2101 Fall 2018

CSC116: Introduction to Computing - Java

Lesson 10: Quiz #1 and Getting User Input (W03D2)

Worksheet 3: Predictive Text Entry

CSE 373: Introduction, ADTs, Design Decisions, Generics. Michael Lee Wednesday Jan 3, 2017

Using System.out.println()

CSE 143: Computer Programming II Winter 2019 HW6: AnagramSolver (due Thursday, Feb 28, :30pm)

CSC116: Introduction to Computing - Java

CIS 121 Data Structures and Algorithms with Java Spring 2018

CS 2110 Summer 2011: Assignment 2 Boggle

CS 315 Software Design Homework 3 Preconditions, Postconditions, Invariants Due: Sept. 29, 11:30 PM

Blackboard Student Guide

Instructions PLEASE READ (notice bold and underlined phrases)

CS/ENGRD 2110 SPRING Lecture 3: Fields, getters and setters, constructors, testing

Regis University CC&IS CS310 Data Structures Programming Assignment 2: Arrays and ArrayLists

CSCI544, Fall 2016: Assignment 1

file:///h:/de/course Production/DE Production/comp_1010_ol/_syllabus...

t 1 =2 t n =3t n 1 1,n 1

AE Computer Programming for Aerospace Engineers

You must pass the final exam to pass the course.

CSE 114, Computer Science 1 Course Information. Spring 2017 Stony Brook University Instructor: Dr. Paul Fodor

INFSCI 1017 Implementation of Information Systems Spring 2017

Problem 1: Building and testing your own linked indexed list

Assignment 5: MyString COP3330 Fall 2017

for Credit is between September 5 and October 3 at midnight.

Lab 1 Implementing a Simon Says Game

Programming Assignment 5 (100 Points) START EARLY!

for Credit is from January 22 through February 20 at midnight.

CSE 336. Introduction to Programming. for Electronic Commerce. Why You Need CSE336

Submitting Assignments

Lab 5 Classy Chat. XMPP Client Implementation --- Part 2 Due Oct. 19 at 11PM

CS 151. Exceptions & Javadoc. slides available on course website. Sunday, September 9, 12

CMSC 132: Object-Oriented Programming II. Administrivia

CS 240 Fall 2015 Section 004. Alvin Chao, Professor

CS 215 Software Design Homework 3 Due: February 28, 11:30 PM

The NetBeans IDE is a big file --- a minimum of around 30 MB. After you have downloaded the file, simply execute the file to install the software.

Spring CS Homework 3 p. 1. CS Homework 3

Spring, 2014 CIT 590. Programming Languages and Techniques Homework 7

Student Guide to Blackboard

CIS 121 Data Structures and Algorithms with Java Spring 2018

Lab 1 Implementing a Simon Says Game

CS 463 Project 1 Imperative/OOP Fractals

CS61BL. Lecture 1: Welcome to CS61BL! Intro to Java and OOP Testing Error-handling

Web-CAT Guidelines. 1. Logging into Web-CAT

Survey #2. Teen Talk Barbie TM Reloaded. University of British Columbia CPSC 111, Intro to Computation Alan J. Hu Partially Filled Arrays ArrayLists

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1, 2, and 3, Spring 2018

One of Mike s early tests cases involved the following code, which produced the error message about something being really wrong:

CSCI 1301: Introduction to Computing and Programming Spring 2018 Project 3: Hangman 2.0 (A Word Guessing Game)

Transcription:

Com S 227 Spring 2018 Miniassignment 1 40 points Due Date: Thursday, March 8, 11:59 pm (midnight) Late deadline (25% penalty): Friday, March 9, 11:59 pm General information This assignment is to be done on your own. See the Academic Dishonesty policy in the syllabus, http://www.cs.iastate.edu/~cs227/syllabus.html#ad, for details. You will not be able to submit your work unless you have completed the Academic Dishonesty policy acknowledgement on the Homework page on Canvas. Please do this right away. If you need help, see your instructor or one of the TAs. Lots of help is also available through the Piazza discussions. Note: This is a miniassignment and the grading is automated. If you do not submit it correctly, you will receive at most half credit. Overview This is a short set of practice problems involving writing loops. You will write eight methods for the class mini1.looptheloopyloopingloopers. All of the methods are static, so your class will not have any instance variables (or any static variables, for that matter). There is a constructor, but it is declared private so the class cannot be instantiated. For details and examples see the online javadoc. You do not need arrays or ArrayLists for this assignment, though you will not be penalized for using them.

Advice Before you write any code for a method, work through the problem with a pencil and paper on a few concrete examples. Make yourself write everything down; in particular, write down things that you need to remember from one step to the next (such as indices, or values from a previous step). Try to explain what you are doing in words. Write your algorithm in pseudocode. The other key problem-solving is to try solving part of the problem, or solving a related, simpler problem. For example: If you have trouble with countiterations, can you a. write (and test) a sequence of statements that perform the given steps for the algorithm just once? (That is, can you get 5.5 from the initial value x = 10?) How about twice? b. write a loop that always just repeats the steps 5 times? c. write a condition to check whether a number squared is within.0000001 of another number (Tip: it could be above or below, so use Math.abs().) If you have trouble with eliminateruns, can you a. iterate over a string and just print the characters one at a time? b. iterate over a string and append each character to a new string? c. iterate over a string and append each character to a new string only if it is not the letter 'p'? d. iterate over a string, and append each character to a new string only if it isn't the character you just appended? If you have trouble with findsecondlargest, can you a. parse the string and just print the numbers one at a time? (Tip: use a Scanner.) b. parse the string and find the largest number? If you have trouble with islucassequence, can you a. parse the string and just print the numbers one at a time? b. parse the string and print each number, and also the previous number? c. parse the string and print each number, and also the previous two numbers? If you have trouble with findmostfrequentcharacter, can you a. count how many times the first character occurs and print the answer? b. count how many times the second character occurs and print the answer? c. use another loop to count how many times all characters occur, and print all the answers? d. keep track of which was the largest answer you found?

If you have trouble with countoccurrences, can you a. determine whether t occurs once as a substring of s? (Tip: use the String method indexof) b. determine whether t occurs twice as a substring of s? (As an example: if you find "bc" as a substring of "abcdbcde", what string do you want to check for the second occurrence? You just want to look in "dbcde" now. The String methods indexof and substring will help you here.) c. What's different if you allow overlap? If you have "aa" and "aaaaa", try step (b) with overlap allowed, and with overlap not allowed. If you have trouble with mergepreservingruns, can you a. do a problem like eliminateruns, where you have to create a new string by appending a character in each iteration? b. merge two strings into one string when all characters are distinct, and both strings are the same length (like "abc" and "xyz") c. do the same, but handle one string being longer ("abcde" and "xyz")? d. do the same, but each time you append a character to the result, check whether there are more of the same character ("abcccde" and "xyz")? If you have trouble with takeapartpreservingruns, can you a. iterate over a string, and print out just every other character? b. iterate over a string, and create a pair of strings containing the alternate characters? (e.g., from "abcde" return "ace bd")? c. given a string, return all characters at the beginning that match (e.g., from "aaabbc" return "aaa")? d. do the same, but start at a given index instead of at the beginning? Remember that you can create helper methods if you wish, as long as you declare them private. (One possible strategy for takeapartpreservingruns and/or mergepreservingruns is to start with a helper method that always returns a group of the next characters in the string that are the same.) My code's not working!! Developing loops can be hard. If you are getting errors, a good idea is to take a simple concrete example, and trace execution of your code by hand (as illustrated in section 6.2 of the text) to see if the code is doing what you want it to do. You can also trace what's happening in the code by temporarily inserting println statements to check whether variables are getting updated in the way you expect. (Remember to remove the extra println's when you're done!)

Overall, the best way to trace through code with the debugger, as we are practicing in Lab 6. Learn to use the debugger effectively, and it will be a lifelong friend. Always remember: one of the wonderful things about programming is that within the world of your own code, you have absolute, godlike power. If the code isn't doing what you want it to do, you can decide what you really want and make it so. You are in complete control! (If you are not sure what you want the code to do, well, that's a different problem. Go back to the "Advice" section.) How do I make a string with a loop, as needed for eliminateruns? Start with an empty string and concatenate an additional character in each iteration. For example, here is one way to create the reverse of a given string: public static String reverse(string s) String result = ""; // start with empty string for (int i = s.length() - 1; i >= 0; i = i - 1) result += s.charat(i); // add on characters one at a time return result; Alternatively you could iterate over the characters left to right, and append them on the left: public static String reverse(string s) String result = ""; for (int i = 0; i < s.length(); i = i + 1) result = s.charat(i) + result; return result; As an aside, experienced Java programmers would probably use a StringBuilder object: private static String reverse(string s) StringBuilder sb = new StringBuilder(); for (int i = s.length() - 1; i >= 0; i = i - 1) sb.append(s.charat(i)); return sb.tostring();

The SpecChecker A SpecChecker will posted later this week. However, when you are debugging, it is usually helpful if you have a simpler test case of your own. Remember that to call a static method, you prefix it with the class name, not with an object reference. For example, here is simple test case for the eliminateruns method: import mini1.looptheloopyloopingloopers; public class LooperTester1 public static void main(string[] args) String test = "abbbccd"; String result = LoopTheLoopyLoopingLoopers.eliminateRuns(test); System.out.println(result); System.out.println("Expected abcd"); You can save yourself from having to type "LoopTheLoopyLoopingLoopers" over and over again by using the Java feature import static: import static mini1.looptheloopyloopingloopers.*; public class LooperTester2 public static void main(string[] args) String test = "abbbccd"; String result = eliminateruns(test); System.out.println(result); System.out.println("Expected abcd"); Since no test code is being turned in, you are welcome to post your tests on Piazza for others to use and comment on. Documentation and style Since this is a miniassignment, the grading is automated and in most cases we will not be reading your code. Therefore, there are no specific documentation and style requirements. However, writing a brief descriptive comment for each method will help you clarify what it is you are trying to do.

If you have questions For questions, please see the Piazza Q & A pages and click on the folder miniassignment1. If you don t find your question answered, then create a new post with your question. Try to state the question or topic clearly in the title of your post, and attach the tag miniassignment1. But remember, do not post any source code for the classes that are to be turned in. It is fine to post source code for general Java examples that are not being turned in. (In the Piazza editor, use the button labeled pre to have Java code formatted the way you typed it.) If you have a question that absolutely cannot be asked without showing part of your source code, make the post private so that only the instructors and TAs can see it. Be sure you have stated a specific question; vague requests of the form read all my code and tell me what s wrong with it will generally be ignored. Of course, the instructors and TAs are always available to help you. See the Office Hours section of the syllabus to find a time that is convenient for you. We do our best to answer every question carefully, short of actually writing your code for you, but it would be unfair for the staff to fully review your assignment in detail before it is turned in. Any posts from the instructors on Piazza that are labeled Official Clarification are considered to be part of the spec, and you may lose points if you ignore them. Such posts will always be placed in the Announcements section of the course page in addition to the Q&A page. (We promise that no official clarifications will be posted within 24 hours of the due date.) What to turn in Note: You will need to complete the "Academic Dishonesty policy questionnaire," found on the Homework page on Blackboard, before the submission link will be visible to you. Please submit, on Canvas, the zip file that is created by the SpecChecker. The file will be named SUBMIT_THIS_mini1.zip. and it will be located in the directory you selected when you ran the SpecChecker. It should contain one directory, mini1, which in turn contains one file, LoopTheLoopyLoopingLoopers.java. Always LOOK in the zip file the file to check. Submit the zip file to Canvas using the Miniassignment1 submission link and verify that your submission was successful. If you are not sure how to do this, see the document "Assignment Submission HOWTO" which can be found in the Piazza pinned messages under Syllabus, office hours, useful links.

We strongly recommend that you just submit the zip file created by the specchecker. If you mess something up and we have to run your code manually, you will receive at most half the points. We strongly recommend that you submit the zip file as created by the specchecker. If necessary for some reason, you can create a zip file yourself. The zip file must contain the directory mini1, which in turn should contain the file LoopTheLoopyLoopingLoopers.java. You can accomplish this by zipping up the src directory of your project. The file must be a zip file, so be sure you are using the Windows or Mac zip utility, and not a third-party installation of WinRAR, 7-zip, or Winzip.