What are the prerequisites for the class?

Students are expected to be familiar with:

  1. Basic probability theory and statistics

  2. Linear algebra

  3. Enough computer science background to be able to understand and reason about algorithms and implement them

Of course, we will introduce some of the relevant prerequisite concepts in the lectures as needed, but knowing the topics will significantly help in understanding the new material. The resources page lists references that may help you get up to speed on these topics.

We strongly prefer that you use python fro the programming assignments. We will make exceptions to this language policy with permission.

Officially, the following prerequisites are enforced for undergraduate students:

  1. You should be a full major in the computer science and the computer engineering program,

  2. You should have obtained a C- or better in CS 3500 and CS/DS 3190.

See here.


Will undergraduate and graduate students be graded differently?

Yes. Graduate students will be asked to do more work (e.g. extra questions in homeworks and/or exams). And graduate and undergraduate students will be curved differently.


Can I submit my homework late?

All assignments must be submitted by the deadline. We will use the timestamp on Canvas as the submission time. Assignments will be accepted up to 24 hours after deadline, but will be assessed a 10% penalty. That is, if your assignment is late and scores 90, then your actual grade will be 81 = 90 - 9.

Assignments will not be accepted 24 hours after the deadline.

We will be strict about this policy: If the deadline is midnight and you submit the assignment at 12:01 AM, you will face the 10% penalty! This may sound harsh, but we have to draw a line somewhere.

To get the best grades possible, we offer the following advice:

  • You can submit files as often as you like, so always try to submit something before the due date!

  • If you discover a major bug or finish solving a problem within 24 hrs after the due date, and you believe that your new solution is substantially improved over your original solution, then resubmit new files! In this case, you will be assessed the 10% late penalty. But your new solution could earn you a better score, so even with the late penalty you will end up with a higher grade.

Exceptions: All submissions are subject to the late day policy stated here. We understand, however, that certain factors may occasionally interfere with your ability to hand in work on time. If that factor is an extenuating circumstance such as a medical condition, we ask you to provide documentation directly issued by the University, and we will try to work out an agreeable solution with you.


I am not comfortable using LaTeX. Can you help?

LaTeX is extremely useful for writing mathematics. While teaching LaTeX is beyond the scope of this course, there are some online resources that can help. Overleaf is an online LaTeX editor and has well written documentation on getting started with LaTeX.


Which languages should we use for the programming assignments?
  1. We strongly prefer that you use Python for the programming assignments. (We will allow other languages with permission.) Individual assignments may also include additional restrictions.

  2. Your program must compile and run on the CADE machines without us having to install any new programs or libraries. You will receive no credit for programs that don’t run on the CADE machines. Of course, you could write the code on your own machines and test it on the servers.

  3. Your submission should include a readme.txt file that gives instructions for how to run your code. A submission that does not include a readme file will not be executed by the TAs or the instructor and you will receive no credit for that submission.


For the programming assignments, should I turn in source code or will compiled binaries do?

We will not accept compiled binaries. We need to see the source code. If you submit a compiled binary without the source code, we will not grade it.


Can I use {a popular machine learning library} for doing the homeworks?

No.

The goal of the homeworks is to help you learn about the intricacies of implementing learning algorithms and conducting experiments with them. So you can't use libraries that do this work for you.

For example, you cannot use decision tree code from scikit learn or SVM from Weka, logistic regression from TensorFlow or PyTorch, etc. You should implement all the machine learning algorithms (and experiment related code like cross-validation).


How do I get access to the CADE machines?

The CADE lab website should give all the information you need. See the sidebar on that page for useful links.


Will we see topic X in the class?

Depends. Machine learning is a fast moving field, where new advances are being made every year. The goal of this class is to provide a broad overview of machine learning, so that you have familiarity with the technical background to follow up on topic X on your own, or in an advanced class.

That said, please let me know if you are very interested in a specific topic. Sometimes, I tend to adjust the lectures to accommodate such requests.


How do I create a shell script for my programming assignments?

A shell script is a file with lines of commands and comments. Usually it works as a glue for small pieces of commands. In the shell script, you can set up the environment, pipeline your program into workflows, and do any necessary cleanup or output. It is worth it to learn to make your life easier. 

Create a file in the directory that contains your python files and name it run.sh. In this file, you should write out the exact commands for running your code with the exact arguments to get the results in your report, as in this example below.

#!/bin/bash

# Train & test
python3 train_test.py your-arg

# Cross validation experiment
python3 cross_validation.py  your-args

# ... other experiments can go here

(Note that your-args are optional depending on how you set up your code. If you only have to run python3 train_test.py to run your program, that is all you need to write here.)

Save the file. In command line, navigate to the directory. Type in the command: chmod a+x run.sh. This will make your file an executable.

Now running ./run.sh in the command line should run your program and output your results.