CSE 101
Introduction to Data Structures and Algorithms
Programming Assignments


General Instructions:

All programming assignments for this course will be submitted through the UCSC Gitlab server https://git.ucsc.edu/. If you have not already done so, please register for an account here.  IMPORTANT: Make sure your account name on git.ucsc.edu is identical to your CruzID (the string before the @ in your email address.) If your account name is not correct, you can change it by going to the pull down menu on your homescreen (using the web interface), select "Edit Profile", on the far left menu select "Account", then change your username.

If you are new to GitLab, read the following GitLab Tutorial. More introductory material can be found at the ITS GitLab for Instruction page. There is also a very gentle Introduction to GitLab on YouTube, and some helpful documentation pages here and here that introduce command line tools for Git. Once you have some experience, you should keep the following Git Cheatsheet handy. Here's one more Git Cheatsheet from another source.

Note that these videos describe interaction with the (free) cloud services GitLab.com or GitHub.com, whereas you will submit your projects to git.ucsc.edu.  Strictly speaking, Git command line tools are not part of the content of this course. They do however constitute an essential skill for any software professional, so it is worth your time and effort to learn them. If you'd prefer not use Git at the command line, you can log in to git.ucsc.edu, and upload your files directly through the web interface.

I will run a script periodically (once a day to begin with) that will create your repository on git.ucsc.edu and give you access.  Note that I cannot create a repository unless your account already exists, which is why I run the script once a day. Thus you may have to wait up to 24 hours after you activate your account before your repo is accessible.  Next, create subdirectories in your repo for each of the assignments in this class. They should be named pa1, pa2, pa3, etc.. (not PA1, prog1, asgn1 or any other name). Be aware that if you misname any file or directory associated with a programming project in this course, you will break our grading scripts, and lose points as a result.

For each assignment, submit all required files to GitLab by placing them in the appropriate directory in your local repo, then upload them to the server (either by using Git commands add, commit and push, or by using the web interface.) If you have any trouble with any of these instructions, consult a Course Tutor or Teaching Assistant in a lab session or office hours.

Programming Assignments:

pa1:  Due Saturday October 7, 10:00pm   Extended (yet again) to Monday October 9, 10:00pm (last one!)
pa2: Due Sunday October 15, 10:00pm Extended again to Tuesday October 17, 10:00pm (last)
pa3: Due Monday October 23, 10:00pm Extended to Wednesday October 25, 10:00pm (last)
pa4: Due Tuesday October 31, 10:00pm Extended yet again to Saturday November 4, 10:00pm (last)
pa5: Due Thursday November 9, 10:00pm Extended again to Monday November 13, 10:00pm (last)
pa6: Due Saturday November 18, 10:00pm Extended again to Wednesday November 22, 10:00pm (last)
pa7: Due Monday November 27, 10:00pm Extended yet again to Thursday November 30, 10:00pm (absolutely last one!)
pa8: Due Tuesday December 5, 10:00pm Extended again to Friday December 8, 10:00pm (last)


UCSC Computer Accounts:

It is recommended that all programming assignments in this course be tested and evaluated on the UCSC Unix Timeshare: unix.ucsc.edu. You may develop your projects in any computing environment or IDE you like, but test your projects on the timeshare, or at minimum in a Linux environment, before submission. Instructions for using the grading scripts for each project will be posted on Ed Discussion. Do not fail to use these scripts to test your programs.

The host unix.ucsc.edu provides a Linux command line environment and home directory access to multiple concurrent users. All students with an active CruzID account can access this system using their CruzID-Blue password. Follow the instructions below to log on to unix.ucsc.edu from your computing device.

Terminal access for Windows users:
Open a PowerShell or Command Prompt window. Type: ssh CruzID@unix.ucsc.edu, where CruzID is your Cruz ID (the the string before the @ in your email address), then respond with your Blue password.

Terminal access for Mac or Linux users:
Open your Terminal app. Type: ssh CruzID@unix.ucsc.edu, where CruzID is your Cruz ID (the the string before the @ in your email address), then respond with your Blue password.

The following software may be useful for development and testing of your projects.

Secure File Transfer for all users:
Download and install FileZilla for your platform. (Warning to Windows users: do not download the installer found here.) Set Host to unix.ucsc.edu, Username to your CruzID, Password to your Blue Password and Port to 22, then click Quickconnect.  The left pane shows your local file system, and the right pane shows the remote file system on unix.ucsc.edu. Just drag and drop files from one pane to the other to transfer files.

Code Editors:
Notepad++ (Windows only), BBedit (Mac only), SublimeText(all platforms). There are many others.

If you have any problems installing these tools, or logging on to unix.ucsc.edu, get help from a Teaching Assistant or Course Tutor. The host unix.ic.ucsc.edu is administered by Information Technology Services.  Consult the IT Services Catalog for assistance with your account.



If you find any errors, please report them to:   ptantalo@soe.ucsc.edu