Intro to Artificial Intelligence
Introduction to Artificial Intelligence
[Spring 2022]


ISTA 450/550: Artificial Intelligence - Assignment Submission Instructions

Please consult the School of Information Extension fo the Code of Academic Integrity Involving Programming. Unless explicitly noted by the instructors, all programming assignments will follow Plan A.

There will be two types of submissions in this class:
  1. Programming projects that will be made available and that you will submit to through GitHub Classroom using the git version control system
  2. Written assignments that will be made available and submitted through a course D2L Assignments folder.

Please see the appropriate section below for details on either.

1. Programming Projects (using GitHub Classroom)

Programming projects will be released to you using a GitHub Classroom set up for this course. As part of this, you will use the git version control program on your personal computer to retrieve the code (clone) and keep track of changes you make (using add, commit and push). Submitting simply means that you have made your final code push to the repository BEFORE the submission deadline.

  • Getting Git on your computer

    Mac and Linux usually have git already available from the command-line (shell or Terminal). If not, see these instructions.

    If you are using Windows, we recommend using git for windows.

    Git is officially "the stupid content tracker"; that is, it is a version control system created by people with a sense of humor (it is not stupid at all!). See the git man page for the complete list of commands. However, we are generally only going to use a very small subset of these (see the next "Recipe" section).

    If you want some more details about what git is, see this video: https://git-scm.com/video/what-is-git. The following link, "The World According to Git", also has a good introduction http://www.eecs.harvard.edu/~cs161/resources/git.html.

  • Recipe for getting and submitting your programming project

    To access the GitHub Classroom project release, we will provide you a link to the project release. We will send one of these links for each project (there will be a different link for each project). Included in each release will be a due date/time - your project code must be push'ed BEFORE this date/time. You will still be able to push changes after that date, but we will only grade what was last push'ed BEFORE the due date/time.

    1. Associate your GitHub account with the Project release

      To access the project via the link, you will need a GitHub account that will then be associated with the project release. If you already have an existing GitHub account, feel free to us it! If you don't already have an account, or your want to create one specific to this class, then create one here: https://github.com/join?source=header-home. Note that you only need ONE GitHub account for all of the course projects.

      Once your account is set up, follow the project link we provide. After you do this, a private repository will be created for the project in your GitHub account.

    2. Use Git to work on your project on your computer

      After having created the project repository associated with your GitHub account (in the previous step), now you can use git to get the repository code on to your local computer (via clone) and add/commit/push your changes to the repository.

      The first step is to clone the repository onto your local computer. To do this, copy the link from the green button on your GitHub project repository page that says "Clone or download" - if your GitHub account is called myGitAccount, then the repository link will look something like this:

         git@github.com:ml4ai-2022-spring-ai/project-1-search-myGitAccount.git
      
      Now open a terminal window, and go to a location/directory where you want to save and work on your local project code (likely this will be the same location for all of your course project code development). From there, you will clone the repository by pasting the repository link after the git clone command, as follows (the $ indicates the command-line prompt):
         $ git clone git@github.com:ml4ai-2022-spring-ai/project-1-search-myGitAccount.git
      
      Now you can develop your code on your local machine and use git to FREQUENTLY commit and push your updates to your project repository. For this, you will use the following Git commands:
      • git status : Displays the current status of the versioning of your code, including listing which files are currently under "Changes not staged for commit" (they need to be added using git add), and which files are ready for commit under "Changes to be committed". Only files that have this latter status can be committed to your local repository.
      • git add : Include one or more filepaths after git add to set their status to "Changes to be committed", after which you can then commit them. If you change these files before you run commit, you will need to add them again (to get those latest changes). Here's an example of adding file1 and file2:
           $ git add file1 file2
        
      • git commit : After you have added files so that their status is under the "Changes to be committed", then you are ready to commit those changes in those files to your local (on your computer) repository state. You always need to include a message, specified by -m followed by a string with your commit comment message. For example:
           $ git commit -m"Fixed bug in search."
        
      • git push : This command "pushes" your current local (on your computer) repository state to your GitHub account "remote" repository. It is this remote repository that we are grading, so you MUST push your latest commits to that repository BEFORE the due date/time - as noted above, we will only be grading the latest pushed state that was made as of the deadline.
      • git pull : A final command that may sometimes be relevant is to pull any changes that were made in your "remote" project repository to your local machine. This would be relevant in this class if, say, one of the instructors has made a change to your repository. But this will be rare. In general, you will be the sole developer of your own project code, so will only be managing making local changes, adding them, committing them, and pushing them to the remote repository.

      That's basically it. Now, VERY IMPORTANT: You will want to add, commit and push your code changes REGULARLY. Get in the habit of doing it after every significant change you make to your code - while you're coding, this may be every 10 minutes or so (that's just a rough estimate - it's up to you). Include informative commit messages, which help you understand what you changed. The instructors will use your commit history (viewable by you in GitHub) to monitor your progress. Another benefit of doing this is that if you make changes you aren't happy with, you can "rollback" to a previous state that you already committed. See here.

      And MOST IMPORTANT: make sure you have made an add, commit and push for your final submission BEFORE the deadline. Once more: we will only be grading the last push made before the deadline. We will not consider pushes made after the deadline. There is nothing more to do for submitting than making that final push.

      There are many other Git commands, but most will not be relevant to our standard use of Git in this class. For example, we do not generally require using branches or doing pull-requests. All grading will be done for the submission in the master branch. You are welcome to use branches yourself, but it is your responsibility to ensure the proper submission is included in the final push to master.

2. Written Assignments (using D2L)