Welcome to CSC 212, Data Structures and Algorithms!
- Table of Contents
- Important Links
- Schedule
- Assignments (100 points each)
- Bonus Points
- Resources
- Setup
- Working with Github Classroom
- FAQ
- Good Reads
Title | Due Date |
---|---|
A01: Kattis Competition | May 30 |
A02: String Class | June 6 |
A03: Hybrid Sorting | June 13 |
A04: Advanced Sorting | June 20 |
A05: Dijkstra's Two Stack | June 27 |
A06: Tree Sort | July 2 |
A07: Heap Sort | July 11 |
A08: Lexicographic Sorting | July 19 |
A09: Karp-Rabin | July 25 |
A10: A* Search | Final |
Task | Points | Due |
---|---|---|
B00: Code Signal Practice Test | 20 | May 23 |
B01: Boot Linux | 50 | June 6 |
Top Kattis | 50, 30, 20 | May 30 |
Fastest Sort | 50, 30, 20 | June 20 |
B02: Array Based Containers | 50 | June 27 |
B03: Heap Implementation | 25 | July 3 |
Additional Advanced Sorts | 50/25/15/10 | July 25 |
B04: Red/Black Tree Sort | 100 | July 11 |
B05: Dynamic Array | 100 | July 25 |
B06: Djikstra's | 100 | July 25 |
- DevDocs
- Cheat Sheets
- Visualizations
- Books
- Videos
- Interactive Online Learning
- Problem Solving Practice
- Learning C++
- cplusplus Tutorial
- Codecademy
- FreeCodeCamp (YouTube)
- C++, Short and Sweet (Udemy)
- C++ For Complete Beginners (Udemy)
- Udacity Nanodegree (non-free)
- Learn C++ by Creating (Udemy non-free)
- LearnCPP
- C++ Programming Basics (Udemy non-free)
- Sololearn
- C++ Templates
- Learn Advanced C++ Programming (udemy non-free)
- Learning Git & Github
- Create a fork.
- Visit the public repository's website
- Fork the repository (Button on the top right)
- Clone your fork.
- Navigate to your Github profile
- Select your copy of the
algorithms
repository - Get the link to your repository from the big green button on the right side of the page.
- In your terminal, navigate to where you'd like to save your work
- Execute
git clone <your_repository_link_goes_here>
- Configure your new repository.
- CD into the freshly cloned repository (
cd algorithms
) - Configure a remote for your fork
- Run
git remote add upstream https://github.com/thoward27/algorithms.git
- Run
- Make sure when you run
git remote -v
you seeupstream
with a link to my copy ofalgorithms
(https://github.com/thoward27/algorithms.git
)
- CD into the freshly cloned repository (
- Procedure for doing classwork.
- Ensure that you've committed all of your work to your current branch (which should not be master)
- Add your current changes:
git add .
- Commit your changes:
git commit -m "<your message here>"
- Add your current changes:
- Now that you're in a clean state, checkout the master branch:
git checkout master
- In order to get the most recent changes from the class repository, you must update your repository:
- Fetch upstream changes:
git fetch upstream
- Merge upstream changes into master:
git merge upstream/master
- For good measure, you should also push these new changes to your online copy of the repository:
git push
- Fetch upstream changes:
- At this point you should be on master, with all updates from the class repository.
- Create a new branch for your work
git checkout -b lab/<topic>
- Publish your changes with
git push -u origin lab/<topic>
- Do your work, committing and pushing regularly, especially after passing any new unit tests
- Add your changes:
git add .
- Commit your changes:
git commit -m "<your message here>"
- Push your changes:
git push
- Add your changes:
- Ensure that you've committed all of your work to your current branch (which should not be master)
- Opening a Pull Request
- You should only do this with explicit permission
- Navigate to your Github profile, and select the
algorithms
repository. - Select the branch you'd like to open a pull request from (normally the one from that days work)
- Select "Open a Pull Request"
- In the message, put all of your groups URI Emails so that I can update my grade book
- Clone the public repository (
git clone git@github.com:thoward27/algorithms.git
) - CD into the repo (
cd algorithms
) - Add the private remote (
git remote add private git@github.com:thoward27/_algorithms.git
) - Fetch from the remote (
git fetch private
) - Checkout dev to work (
git checkout dev
), merge to master when you're ready to publish.
Be sure that when you're dealing with solutions, or WIP, that you ensure you push only to private. The branch Dev should never be pushed to the public facing repo, accidental pushes will be hard wiped immediately, all data will be lost.
This is the operating system we prefer in this class, as it closely mirrors your auto-grader environment.
Please boot linux, Windows 8 and older is extremely challenging to develop C++ on.
If you insist on using Windows 8, you will need to install Cygwin, or you will have to buy an online IDE license.
In order of preference:
This section contains some helpful online IDEs that can be used for in-class work, but may not be used for homework without purchasing an upgrade.
You may not work on homework in any of these IDEs unless you upgrade your license, you must work in private repositories for homework.
- Registering for the assignment
- Click on the link to the assignment
- Make sure you select your email from the roster if you have not already
- Accept the assignment
- Click on the link after the text "Your assignment has been created here:"
- Clone your assignment to your computer
- Go to the page for your assignment
- Select "Clone or download" (big green button)
- Copy the link
- Open a terminal and navigate to the
algorithms
folder - Use the command
cd ..
to step out of the algorithms folder - Clone your repository
git clone <your link goes here>
cd
into your new folder:cd <your assignment folder>
- Open this folder in VS Code
- Completing your assignment
- Following the instructions for the assignment, being working on the provided unit tests.
- After passing each unit test, commit and push your progress.
- Stage your changes:
git add .
- Commit your work:
git commit -m "<Name of the test case you just passed>"
- Push your work to Github:
git push
- Stage your changes:
- Check that your submission worked by visiting the online copy of your assignment, and verifying your changes were pushed.
- Why isn't my code compiling?
- Are all expected methods/functions declared and defined?
- Are your methods namespaced properly?
- Are you on Mac? Try using
-std=c++11
- What do the errors say?
- Can I add attribute
x
to my class?- Yes, you are welcome to modify all private sections to any class we create.
- What libraries can I use?
iostream
,chrono
- Anything we have already built (you have to source it from our repository)
- Why doesn't
make
work?- Fix script:
sudo apt-get update && sudo apt-get upgrade && sudo apt install make && sudo apt install g++-8
- Fix script: