Welcome to Assignment 0!

Hi everyone, welcome to LING 334 / CS 396 - Introduction to Computational Linguistics.

This is not really an "assignment," but rather an initial set of logistical tasks for you to get your setup going to be able to do the work in this class, and an opportunity for us to ask you a few intro questions!

The "skeleton code," such as it is, for this assignment is located here: http://faculty.wcas.northwestern.edu/robvoigt/courses/2024_winter/ling334/assignments/a0.zip

Later on, explained in the Course Directory section, you'll want to wget this zip file into your directory on Quest.

Catch-up

I know folks are coming into this class with a variety of backgrounds. Here are some resources if you need to get caught up one way or another so we're all (roughly) on the same page.

Command Line

As explained in the next section, you are required to submit your assignments on Quest and they are required to run there. This means you have to SSH into Quest and use the command line to navigate around etc. If you are less familiar with this, here are some resources to check out:

Lecture 1 of "The Missing Semester of Your CS Education" and the corresponding lecture notes

http://conqueringthecommandline.com/book/

http://linuxcommand.org/tlcl.php

Python

This class requires you to come in with some coding experience. All code for this class will be done in Python; if you don't have experience in python, hopefully it should be relatively easy to pick up. Nevertheless it may be helpful to spend some time this week playing around in Python and getting used to things. Here are a few resources:

https://wiki.python.org/moin/MovingToPythonFromOtherLanguages

https://docs.python.org/3/tutorial/

https://codingbat.com/python

https://www.learnpython.org/

Probability

This class will require us to work with probability. You don't have to be an expert, but you will want to understand the basics. If you're feeling iffy, here is a fantastic resource designed by Sharon Goldwater at Edinburgh for exactly this situation:

https://homepages.inf.ed.ac.uk/sgwater/teaching/general/probability.pdf

Quest

As I'll explain in class, you can work on your assignments anywhere and anyhow, but for this and all future assignments we require you to submit your work on Quest, and require that it runs there. Quest is Northwestern's high-performance computing cluster, and you'll access it via the terminal using SSH.

You should already be added to our project allocation, and therefore able to follow these instructions on how to log into Quest. The one issue with these instructions is for Windows they recommend using FastX, which I find to be a bit silly. Personally I use MobaXTerm and recommend it. You can also follow the instructions from the first assignment from my other class which might be more clear.

If your login is not accepted then you may not have been added to the course yet (e.g. if you joined late), and if this is you please email Rob right away. If you're having other trouble with the process of logging in, please let us know right away - come to OH or post on Ed.

Permissions

Once on Quest, please edit your .bashrc file to contain the following line:

umask 002

Before moving on, log out and log back into Quest once. This will ensure that we can edit your assignments to provide inline feedback.

Python Setup

The assignments and autograders for this course assume you use Python 3. On Quest, the default Python is Python 2, so to make your default be Python 3 run:

module load python/anaconda3.6

You have to do this each time you log in, or put it in your .bashrc. Alternatively when running things you can simply use python3 as the command rather than using python.

Course Directory

We have a course directory on Quest located at /projects/e31408. In there is a users subfolder. Please go in there and create a folder for your work named after your NetID. Then, inside that folder create a folder called a0 to hold this first assignment. E.g., in my case, to get started I might do all the following:

cd /projects/e31408/users/
mkdir rfj5679
cd rfj5679
mkdir a0
cd a0
wget http://faculty.wcas.northwestern.edu/robvoigt/courses/2023_spring/ling334/assignments/a0.zip
unzip a0.zip

Now I'll be in our course user dir, in my user subdir, in my a0 subdir, with the intro.py skeleton code in there ready to go. This will be roughly the same process you'll follow for every assignment this quarter; make a new a# directory, wget the skeleton code, and get going.

Assignment Content

You'll see that the skeleton code this time around is almost empty. I primarily wanted to ask you a few introductory questions. So check it out and fill it out - I look forward to getting to know you all!

Submission, Extensions, Questions

Throughout the course the code itself will be a key interface for us to communicate about the assignments and submissions. At the top of every assignment you will see some pre-defined variables to fill out. Allow me to explain:

completed is a boolean flag letting us know you've completed the assignment and it's ready for us to look at. You must remember to flip this flag to True when you're done. We won't look at the assignment if this flag is not True.

expected_completion_date is for cases where the deadline has passed and you haven't yet been able to complete the assignment. As I'll discuss in class, this is okay, but I ask you to try and provide a realistic estimate of when you plan to have it done. This should be a date in MM/DD/YYYY format. If you finish your assignment before the deadline you don't have to edit this.

questions_or_comments is a string variable in which you can write any questions or comments that came up while you were working on the assignment. The teaching team and I will be reading these and trying to make sure we follow up on things. This should be used relatively sparingly - for any questions others might share or comments that would be useful for others in the course, please do post on Ed instead. This is more for personal/detailed/specific issues, like "somehow I passed the autograder but I really wasn't sure why such-and-such a function worked" or for minor and non-urgent things or "I'm curious about such-and-such" this can be a space to use.

extensions is a boolean flag letting us know if you did any extensions for this assignment. I'll discuss this in class, but the idea is the base assignment has an autograder, and extensions do not. We will look at and provide qualitative feedback on any extensions you do, so this flag lets us know to look for that. Obviously for this assignment we won't have any of these so this can stay False.

Autograder

The base content for every assignment for this course will have an autograder that will attempt to check the completeness and accuracy of your work. Even this one! The autograders live in our course directory in the autograders subdirectory.

Please make sure the autograder runs on this assignment before you flip the complete flag. To do this, run the following command on Quest while in your assignment directory containing your intro.py file:

python /projects/e31408/autograders/a0.py

When you see a happy message that everything looks good, you're done.