Transferring files between your local computer and Andrew Unix

A bunch of people asked about this on Piazza, so I felt obliged to go ahead and write about it!

Mac and Linux users

I recommend using scp, a linux command for remote file copy using SSH. If you’re familiar with Unix, you’ll realize that the format for this command is very similar to the cp Unix command as

scp source destination

For example, let’s say Nobody (nobody@andrew.cmu.edu) wants to transfer the file foo.c0 from the Downloads folder on her local computer to her 15122 folder on Andrew Unix. (Our target andrewid is nobody, you should replace it with your own)

scp ~/Downloads/foo.c0 nobody@unix.andrew.cmu.edu:~/private/15122/

Conversely, if Nobody has finished editing her code and wants to copy it to the code folder on her local computer (maybe in order to upload to Autolab), she can use the scp command again with the source and destination switched, as follows.

scp nobody@unix.andrew.cmu.edu:~/private/15122/foo.c0 ~/code

You can refer to the man page for scp for more details and options. One very useful option is the -r flag which is used to copy over folders as opposed to files.

If you’re on a Mac, you can also use Fetch, if you would rather not work on the command line to transfer files.

Windows users

Not being a Windows user myself (I switched to Mac when I got to college), I recommend you take this advice with a grain of salt, as most of it is hearsay.

WinSCP, I’ve heard, is a very good option. I think it works a lot like Fetch for Mac users. There is ample documentation on the website that should probably get you up to speed on setting it up and using it. It also has good integration with the PuTTY SSH Client, that you’re probably using to SSH into Andrew Unix.

The Beginning…

Hey there! I’m Nivedita and I’m a junior at Carnegie Mellon, where I’m majoring in Computer Science (with a minor in Economics).

This is my 4th time as a Teaching Assistant for 15-122 : Principles of Imperative Computation, currently the first course in the core CS curriculum at CMU. The first part of the course is taught in C0 (pronounced c-nought), a language developed at CMU that is described by it’s creators as “a small safe subset of the C programming language, augmented with contracts.” As the semester rolls on, we introduce various data structures and algorithms, whilst setting the stage for a transition into C. Upon transitioning into C, we discuss memory management, generic data types, function pointers and various quirks of C. The course culminates with the students writing a virtual machine for C0 in C, that is able to execute byte code generated by the C0 compiler.

Most people blog about an experience that they’re having for the first time. Why am I doing it my fourth time? Because, along the bumpy road, I’ve learnt a lot and I think the time is ripe to share it, while I’m reliving the experience again. Some of it will be about the material, some of it will be about how I’m teaching it.

Looking back, I realize that I’ve learnt the most from the students taking the class. This semester promises to be no different, hence I’m dedicating this blog to the students taking 122 in Spring 2014. So hang on tight for a roller-coaster ride through a land of smiles and tears, hugs and frowns, where the C0 compiler and Autolab can make or break your day.

(For more info on C0, check http://c0.typesafety.net/)