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.
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.9-3.10. I've not yet installed python
3.11 but if you are really wanting a feature from 3.11 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.
Sprint 1: Getting some Jobs data
Due: Wednesday Jan 31th at 11:59pm
- Create a project in your jetbrain's IDE for your language of choice.
Be sure to include your name in your project name (for example jsantoreJobsProject
would be a fine name for me to use for this project. I have 50+ students
doing some variation of this project and so I'll have a lot of problems
with dozens of "project1"
projects.
- Add the project to git using either the built in jetbrains tools or
command line git
- share the project on github using either the built in jetbrains tools
or command line git. Be sure to include any build files that I need.
- Add the appropriate github actions script to your github project, be
sure to include a linter.
- write a program which will (in at least three methods/functions so you
can test properly)
- use your API key to get jobs data, Most of the code is written for
you by the serpapi. but be sure to get at least 5 pages of jobs. (that
will use 5 of your 100 free queries
- Be sure to git commit and git push often so you don’t lose anything to
a dead laptop.
- For this first sprint, just save the data to a file
- Be Sure to use the “secrets file” approach so you don’t commit your
api-key to github and push your project
- Write a readme.md for your project in the github project (you can do
it with your jetbrains IDE if you like)
- the readme should have
- your name
- any install and run directions I need beyond the the standard
library for your language.
- a brief description of what your project does and how to use it.
- a brief description of what is missing from the project (if
anything)
- make me a collaborator on the project
- to submit, make me a collaborator on your project. I'll git clone
it, run it and the tests and linter, make an innocuous change to your
project, and make sure the github actions work and grade based on
these things.
As Part of my grading for at least one sprint – usually this first one, I
generally make a small commit to your project and push it to github. Be
prepared to do a merge between your work and mine.
This project is as much about getting all of
the tools and devops stuff setup and working properly as it is about
getting the code to work right.
You can find the grading distribution in the Project1Sprint1Grading
file