CSCI 384 Programming Assignment Guide

The programming assignments appear as assignments on Canvas, but the description of the problems appear separately in a pdf that you can also find on Canvas. For example, in the Canvas module "Introduction and warm-up", there is a Canvas assignment "Python warm-up" that integrates with the Canvas calendar and gradebook. But the description of the problems themselves are found in the accompanying file "Python Warm-up Assignment."

The programming assignments in this course work similarly to what you may remember from CSCI 345 Data Structures and Algorithms: You'll get starter code from the course GitHub repository, use provided test cases to test your code, and turn in the files you modified to a turn-in folder on the lab file system.

Unlike CSCI 345, I won't grade you solely on passing the provided test cases. I reserve the right to make new test cases for grading and to inspect your code, grade on efficiency and style, etc. (Who knows, though, I might get lazy and just run the provided test cases after all.) Moreover, programming problems are due as indicated, not at the end of the semester.

First, clone the repsository from github. The repository is TVD-WC-CSCI/CSCI384_CL_F25

git clone https://github.com/TVD-WC-CSCI/CSCI384_CL_F25.git

In the course repository you'll find a folder called assignments. This folder has a subfolder for each assignment. Most assignments will have only one file you need to modify. Most of the time you'll be writing functions whose stubs are provided in the file.

For each assignment, there will be a provided blank file called RESOURCES in which you should report on what resources you used. Did you get help from a classmate? Did you refer to the official Python documentation? Did you refer to another Python tutorial? Did you use github CoPilot or a similar tool? Did you get guidance or ideas from sites like StackOverflow? Did you use code examples generated by an AI overview from a Google search? Etc. Moreover, do you believe that using these resources helped you learn the lessons intended by this assignment, or, looing back, do you think that using these tools defeated the purpose of figuring the problems out on your own?

Turn in the file you have modified and your RESOURCES file to a turn-in folder named

 /cslab/class/cs384/(your userid)/(assignment name). 

The "assignment name" used as the name of the turn-in folder is the same as the name of the folder in the repository with the starter code.

For example, if Count Dooku is doing the first assignment (Python warmup), he should edit the file assignments/python-warmup/warmup.py in his copy of the repository. After writing the bigram_freq() function, he can use the testcase test_bigram_freq.py through the pytest tool:

pytest bigram_freq.py

When he is all done with the assignment, he can copy the file warmup.py to the appropriate turnin folder. If he's doing this completely on the CSCI lab machines, then he does:

cp warmup.py /cslab/class/cs384/countdooku/python-warmup
cp RESOURCES /cslab/class/cs384/countdooku/python-warmup

But if he's copying the file from his own computer, he uses secure copy (scp):

scp warmup.py countdooku@csgate.wheaton.edu:/cslab/class/cs384/countdooku/python-warmup
scp RESOURCES countdooku@csgate.wheaton.edu:/cslab/class/cs384/countdooku/python-warmup

If you're not sure about where to turn something in, or whether you have turned something in, etc, you can always ls your turn-in folders. For example (the % indicates the command prompt so that you can see the difference between what the user enters and what the response is),

$ ls /cslab/class/cs384/countdooku
python-warmup  regex
$ ls /cslab/class/cs384/countdooku/python-warmup
RESOURCES    warmup.py

If there's anything you're unsure about regarding an assignment or the logistic of the course, you can always ask your instructor.

Jupyter notebooks

If you want to redo a notebook from a lab activity for your own practice (or because you missed the lab), you can grab the notebook file from the course Public folder, for example

/homes/tvandrun/Public/cs384/labs/python_nltk_demo.ipynb

To launch a notebook, the command is

jupyter notebook

Remember that Jupyter notebooks run in a browser. If you have a browser open, then Jupyter will start in a new tab. If you do not have a browser open, then Jupyter will launch the default browser.

Python installation information

In CSCI 384, we use Python 3. Note that in the CSCI lab, the python command maps to Python 3.

If you plan to use your own computer, make sure you have Python 3 installed. You'll also need the following libraries (this list might grow over the course of the semester):

Moreover, you'll need the pytest tool https://docs.pytest.org/en/7.1.x/getting-started.html

In lab activities we'll be using Jupyter notebooks. Although not necessary for any assignments, if you want to revisit any lab activity on your own computer, you'll need the Jupyter tool: https://jupyter.org/install You'll also need the visualization library Matplotlib:


Thomas VanDrunen
Last modified: Wed Aug 30 09:37:43 CDT 2023