Homework 1
Last modified: January 17 2008 10:50:05 AM
Introduction
Welcome to the world of CSE 250 and the world of C++. Life is different on this side. Some things you may like, some things you may not like, but in either case, this is the world of 250. In this homework, we'll explore that world a little bit.
Academic Integrity Disclaimer
For this assignment, you are allowed to work with other students in the class in the following way:
When finding resources, please perform the search alone and submit your results (see further description below).
You may work with at most one other person on the coding part. This way, you can ask questions of each other and fight with the compiler together. However, I would caution you to only turn to another person if you are stuck with your implementation and you can't figure out why it won't work (in the compiling or running sense). If you are having a coding problem, whereby the code runs but there is a bug in the algorithmic part of your code, I would strongly suggest working as long as you can on it yourself before seeking help. You want to build up your skills as an independent programmer throughout this semester, so working through problems by yourself for as long as possible will help in that effort.
If you choose to set up another system (laptop, desktop, etc), you can work with as many students as it takes to get the system up and running. When finished, everyone should summarize what the experience was and what they did (see description below).
When you are working with other people, please make sure to include their names in your submission.
Objectives
- Find resources for C++ that you think will be helpful
- Get acquainted with the cse systems compiler and use it to write a program.
- Set up a system for you to work at home with (optional)
Preparatory work
You need to make sure you are registered for the class. That is the only way to ensure that you will have a cse account set up for you. If you need assistance, contact Adrienne.
Lab Tasks
Resources for C++
Go off and find some online resources for C++. These could be language reference sites, sites about the STL (standard template libary), an online language standard, information about our compiler (g++) or even references about data structures in C++. Skim through the sites you find and try to pick out two that you think would be useful to you.
Create a file named resources.txt
and put the entire URL of the two sites into those files. You don't need to provide any explanation, but simply put two resources that you think may be helpful. While it might be tempting to simply take the first two Google hits, I would encourage you to really read through what the site has to offer and pick based on what you feel would be helpful. We will look at the sites submitted and create a reference page based on the sites we think would be most useful.
Playing with first C++ program
The program that found the smallest numbers in an array iteratively that we created in class can be found on nickelback/timberlake
in
~adrienne/250/Smallest
Copy that file into your home directory (perhaps you should first make a directory for this class and put the file in there).
Open the file in an editor that works on our systems. I was using Emacs in class, but there is also XEmacs, both of which are slightly more powerful editors, or simpler text editors like pico or vi.
Review the code and the syntactical issues we discussed in class. Compile the code and run it. Go into it and change it, compile it, and run it. Tinker as much as you'd like to get comfortable with the new edit-compile-run cycle you will need to complete. If you choose to set up at home, you'll want to repeat this process at home as well to make sure your at home setup is working properly.
Creating your own C++ program
Now, you will create the recursive version of this code. You should name your file SmallestRecursive.cpp
. You should use the knowledge of the iterative version of the algorithm as well as the recursive algorithm we discussed in class to create your version. Your version must use C++ vectors, NOT arrays. You should test your code on many sample datasets to be sure it works.
You are not required to create a user interface, but it might be easier for testing purposes to do so. Also, extra credit will be rewarded for those submissions with a user interface. We are only expecting a text-based user interface for this assignment. Make the interface usable. Only usable interfaces will be eligible for the extra credit points.
Remember, that your program must compile and run on nickelback/timberlake
to be counted for credit. Programs that do not compile or run will get an automatic grade of 0 assigned.
Working from home (Optional)
If you would like to set up your system to work from home, now is the time to do so. You will need a program that will help you edit C++ code. There are quite a few available, check out your options and pick one. You will also need the proper version of the compiler (if applicable - Visual Studio for example I don't believe lets you pick a different compiler). Once you have everything installed on your machine, you should download my Smallest.cpp
and try it out. Once again, change it, compile it, and then run it to ensure everything is working fine.
If you are not able to run the same compiler on your system as on nickelback/timberlake, then you should take this time to see if at this point you run into compatibility issues. There may not be many, or there may be lots. You will have to deal with that as you progress through the projects in this course.
When you get your system up and running, please write a set of instructions for the install. Please make the file a plain text file and name it InstallInstructions.txt
and submit it using the electronic submit command. We will post submitted instructions for all students to use. Extra credit will be awarded to those who submit installation instructions.
Due dates
This homework is due for all students by 11:59:59pm on Friday, February 1st using electronic submission. There is one submission command for the entire class
submit_cse250
You need to submit your file named resources.txt
as well as your file named SmallestRecursive.cpp
(and the optional InstallInstructions.txt
) Submit each of these files separately. Due date will be computed from the file that is submitted the latest. There is no early points for homework, nor are any late homeworks accepted for grading.
If you need assistance with submit or are confused about using the computers in our labs, you need to seek out advice and assistance early in the process of completing this assignment. No extensions will be granted for excuses about not knowing how to use the systems.