Project 1 Sprint 1
Summary: This multi part project will provide you an chance to
practice your programming skills and practice with the agile software
development methodology, continuous integration, automated testing and other
more industry oriented practices that we don't often use in academia.
Agile: This project will be done in the agile methodology
in that it will be done in a series of sprints. Each week there will be a
3-6 hour (estimated – this assumes you start early enough to walk away when
things get complected) assignment which builds on the previous assignment.
So be sure to be careful to practice good software development techniques so
that you don't make life difficult for yourself later.
Individual work: Later in the semester we will work on
group work. For this project you will work individually. You may ask your
classmates for pointers on getting your git/github/jetbrains toolchain
setup, but each student should be doing their own work. You can of course
use my "as long as you are just talking and no one is on a recording device
like a computer" guidelines to point each other at good libraries to do this
work.
Tools: Use the the correct Jetbrains IDE for your language of
choice (see below). If you have not yet done so, activate your jetbrains
student account to get one year of academic use of the jetbrains
professional development tools. For those who really know vsCode and can
make everything work on their own, feel free to use that toolchain, as long
as the result works on my machine.
Version Control: In this class we will use git for version
control.
Programming languages: You may use one of several
programming languages for this first project so long as you make "it
works on my machine" (not just yours). With that in mind the
following language are supported in this class.
I don't have any access to MS Windows
machines. All of my grading will be done on linux - which is also what the
Automated testing systems on github use
Python: use Python versions 3.10-3.12. I've not yet installed python
3.13 but if you are really wanting a feature from 3.13 talk to me, I might
be able to get it done in the time frame. Also include a requirements.txt.
Use pytest as your testing framework when we start tests next sprint.
Java: Java 17or 21, 21 is the current LTS (Long Term Service)
version of Java, that's what I'll run/test your work on. If you are using
java, use gradle to manage your dependencies in intellij. Be sure to check
in the entire project with the build.gradle files when committing/pushing
your version control
Go: if you use go, use a go mod file and don't put the go.sum on
github
Rust: If you use rust, be sure to have all your dependencies properly
in your cargo.toml
C or C++ if you want to do C or C++ be sure to have a configure file
and a makefile so it builds properly.
Other languages, if you want to use other languages, see me to make
sure I can support them. The main issue is the "Works on My machine" issue.
Your program has to work on a standard server (which runs linux) with
minimal additional setup from me. If you provide a set of automation files
that take a while to run while I'm away from my machine that will work.
Due: Tues Feb 4th at 11:59pm
Deliverable/Assignment for Sprint1
- Make a new github project with your name somewhere in the project
name, for all sprints of project1
- Get the file [ rapid_jobs2.json ]
which contains information about job advertisements in the computer
science field
- Create an account with a generative AI system, I've tested several
systems that have a reasonable free tier and you can find links below.
You will need to share your API key with me if there is no free tier so
I encourage you to choose one that has a free tier.
- Google (Bard/Gemini/Whatever they are calling it today)https://aistudio.google.com/app/apikey
- Ollama (runs locally, so no key needed, but the bigger models run
really slowly on desktop unless you have a really powerful NVidia GPU)
https://ollama.com/
- together.ai - provides you a $5 balance with a free account some
Docs: https://docs.together.ai/reference/chat-completions-1
- Alternatively there are several low cost options (I have tested
these less thoroughly - but have heard good things)
- Perplexity AI https://www.perplexity.ai/
requires a non-zero balance, I recommend using a pre-paid
debit card if you go this route
- If you have a Microsoft Azure Account, check out the Microsoft
Azure AI (the regular co-pilot doesn't have an API [as of
Fall 2024], and that is needed for this assignment.
- if you have an existing account with another provider and I will
be able to get the program to run on my machine without you
embedding your API key into github or your app that work too so long
as it works via a rest API and you tell me about it so I am
prepared.
- Play with the sample program(s) from the tutorial for your chosen
AI/LLM to get a good prompt for the following:
- give the LLM/AI a job description
- give it a description of you
- ask it to give you a sample resume in markdown format that will be
designed for your skills and the job description you provided.
- Add your program/project to git including
- your program code
- A Readme file which
- Explains how to run your program (possibly referencing an API key
that you sent me separately or a server that I need to contact if
needed)
- Explains why you chose the AI/LLM that you did.
- Explains The AI prompt that you chose and describes the changes
you have made to settle on this prompt over others.
Submitting this assignment
- To Submit this assignment, push it to a private github
repository for the github account whose name you sent me earlier.
- Make/invite me to be a collaborator on this project.