Everyone:

Welcome to CSE 30124 Introduction to Artifical Intelligence, which (as the syllabus states) is a broad introduction to the field of artificial intelligence. We will begin the semester with a brief history of the field and review of relevant mathematical concepts that form the foundation of AI. As the semester continues we will dive into Machine and Deep Learning and then at the very end loop back around to where we started.

TL;DR

For this week, you should familiarize yourself with using Slack, setup your GitHub assignments repository, decide how you will run the notebook software used in this course and then submit your notebook for the first homework.

Course Overview

Artificial Intelligence is an extremely broad field and while no doubt all of you will be familiar with some aspects of it, likely the GPT family, these tools are only a small subset of what the field encompasses as a whole.

We will begin the course at the top of the circle and work our way down. However at the end of the semester and the bottom of the circles we will find that we start to wrap back around again to the top.

Although each class will involve some amount of lecture, there will also be a (nearly) weekly quiz during the lecture on Monday. Because of this, you are expected to come to class regularly and on-time.

Task 1: Slack

For communication outside of our meeting time, we will be using Slack, specifically the #cse-30124-fa24 channel:

https://nd-cse.slack.com/messages/cse-30124-fa24/

There is a class mailing list, but most day-to-day communication (including office hours and homework help) should take place on Slack.

Be aware of the following:


Task 2: GitHub

All of your work will be submitted to GitHub using git. Your third task is to setup your GitHub repository by doing the following:

  1. Sign-in or create a GitHub account if you do not already have one.

  2. Fork the class assignments repository from the following template:

    https://classroom.github.com/a/BRyH4v1R

    This will create a private assignments-$USERNAME repository under your own account and linked to the nd-cse-30124-fa24 organization.

  3. Once this is done, you can clone your git repository to your local machine (or the student machines:

    $ git clone git@github.com:nd-cse-30124-fa24/assignments-$USERNAME.git
    

    Note, that GitHub has recently shutdown password authentication.

    To remotely access your repository from the command-line, you have two options:

    1. Setup a Personal Access Token: With this method, GitHub will generate an application specific password that you can use with HTTPS. As the PAT is a long string of characters, it is recommended that you use it in conjunction with a password manager or keyring.

    2. Setup SSH Keys: With this method, you generate a local public and private key pair on your computer and then upload the public key to GitHub. When accessing GitHub from the command-line, you will use the private key to authenticate to the server. This is the recommended way to setup your repository as it will allow for passwordless access.

    Setup SSH Keys

    Here is a quick tutorial on how to Setup SSH Keys on the student machines (if you have not already):

    1. Generate SSH keys if you don't have them yet:

      # Accept the defaults, don't make a password if you want to go passwordless
      $ ssh-keygen
      
    2. Copy the contents of ~/.ssh/id_rsa.pub to the SSH Keys section of your GitHub settings page:

      https://github.com/settings/keys

      # Copy and paste the contents of this file into GitHub
      $ cat ~/.ssh/id_rsa.pub
      
    3. Edit/create ~/.ssh/config to use this key with GitHub:

      # Add the following to your config (replace $NETID with your netid)
      $ $EDITOR ~/.ssh/config
      Host github.com
              User git
              Hostname github.com
              PreferredAuthentications publickey
              IdentityFile /escnfs/home/$NETID/.ssh/id_rsa
      

    Once this is done, you should be able to do git operations without a password. You will need to accept the host key the first time by typing in "yes".

    Note: Please update the README.md file to include your name and NetID so it is straightforward to identify your account.

GitHub Repository

You are responsible for ensuring that your GitHub assignments repository is in proper order, which means you have the correct settings and permissions set. Failure to properly configure your repository will adversely impact your grade.

Task 3: Reading

The readings for Monday, September 2nd are

  1. CSE 30124 Introduction to Artificial Intelligence

  2. Introduction to Notebooks

Please at least skim all four, but for the purposes of this course you just need to get one of the methods working to run your notebooks. Notebooks can be run locally through something like VSCode, however as we get into more powerful AI models, your machine may be unable to keep up. Services like Kaggle Notebooks and Google Colab provide access to free GPUs which will likely prove useful. If you have other methods, please feel free to reach out to your instructor to discuss them.

Note: Don't worry if you don't get the homework done by Monday, as this is the first week of class.

Task 4: Notebooks

Once you have done the readings, run the following notebook using the method of your choosing:

DOWNLOAD NOTEBOOK

For your convenience the notebook is displayed below as HTML but you will likely find it easier to download the raw notebook file given above.

To submit your answers, you will need add your homework00.ipynb file in the homework00 folder of your assignments repository:

Answer the questions in your notebook file using the method of your choice and once you are finished, follow the instructions below to submit your notebook.

  1. For this class, you must use a separate git branch for each assignment. This means that the work for each reading and challenge must be done in a separate branch. To create and checkout a new branch, you can do the following:

    $ git checkout main         # Make sure we are in master branch
    $ git pull --rebase           # Make sure we are up-to-date with github repository
    
    $ git checkout -b homework00   # Create homework00 branch and check it out
    

    Once you do the above, you should see the following output for the git-branch command:

    $ git branch
      main
    * homework00
    

    The * indicates that we are currently on the homework00 branch.

  2. Once you have your notebook filled out, you need to add, commit the file, and push your commits to GitHub:

    $ git add homework00.ipynb                # Add answers.json to staging area
    $ git commit -m "Homework 00: Done"    # Commit work
    
    $ git push -u origin homework00        # Push branch to GitHub
    

    Note: You may edit and commit changes to your branch as many times as you wish. Just make sure all of your work goes in the appropriate branch and then perform a git push when you are done.

  3. When you are ready for your final submission, you need to create a pull request via the GitHub interface:

    • First, go to your repository's Branches page and then press the New pull request button for the appropriate branch:

    • Next, edit the pull request title to "Homework 00", write a comment if necessary and then press the "Create pull request" button.

    • Finally, assign the pull request to the teaching assistant assigned to you for the given week.

Graders

Please refer to the Homework 00 TA List to determine who your grader is for this week.

Once you have made the pull request, the instructor or teaching assistant can verify your work and provide feedback via the discussion form inside the pull request. If necessary, you can update your submission by simply committing and pushing to the appropriate branch; the pull request will automatically be updated to match your latest work.

When all work is graded, the grader will merge your branch and close the pull request.

Note: Please do not merge your own pull request. This makes it more difficult for the graders to keep track of what needs to be graded.

Qualitative Feedback

The purpose of this workflow is to provide you with better feedback. Instead of simply determining if your work is correct, the instructor will attempt to provide you with more qualitative feedback such as whether or not you used good programming practices or if your code could be improved or organized better.

The hope is that this will help you grow as programmers and develop some taste :).