When you link to specific GitHub profiles from your resume, you want to make sure that you’re showing good work as well as good working practices. Remember: GitHub is not just a glorified DropBox (or choose your favorite other cloud storage provider) for Source Code. So, I wanted to pass along a few tips to help you take some of your larger project repos to the next level. Remember, everything doesn’t have to be 100% perfect. Nearly every project is some version of a work-in-progress.
[Read more…]Setting Up Your GitHub Profile
As you prepare for a job search, it is important that you put your best self out there for the world (and potential employers) to see. One of your most visible public faces is your GitHub profile. This is important whether your studying computer science, data science, or cybersecurity. If you were a painter, your GitHub profile would be like inviting someone into your art studio. It is something you should take pride in. To the best of your ability, you should keep your GH Profile, LinkedIn Profile and Resume in sync as much as possible.
[Read more…]Using the Khoury Office Hours App
In large-enrollment classes, managing the queue of students waiting for office hours help can be a struggle for the TAs, especially for virtual office hours. Additionally, students want to know where they are in the queue so they can estimate wait times, etc. Professors would also like to get a sense of peak usage of office hours and other analytics.
So, this semester, I’m going to begin using the Khoury Office Hours App to manage virtual office hours for my current course (CS 3200 – Database Design). I’m confident that this will make the overall experience better for both TAs and students.
For Students:
[Read more…]Gearing Up for Spring 22 Data Structures
Happy New Year! I hope your winter break has been restful and relaxing!
I’ve gotten a few requests from folks about how to prepare for CS 2341. So I thought I’d provide a list of things to review before class starts:
- C++ Language
- Pass by value vs pass by reference vs pass by pointer
- Pointers and dynamic memory allocation
- How to declare classes and their main methods (constructors, destructors, etc)
- Operator overloading in a class
- Object composition
- Did I mention Pointers?
- How to declare a pointer?
- How to dynamically allocate memory on the heap?
- How to dynamically allocate an array of pointers?
- the & operator and the * operator
- How to separate interface from implementation
- reading and writing files and parsing data
- Conceptual Things
- How to break a problem down into bite-sized chunks.
- The idea that a function should do one thing and it should only do that one thing
- Developing algorithmic solution to basic problems involving a simple 1D array
- make use of control structures like ifs and loops
- example: Find the 2nd smallest value in an array with only 1 loop.
- The conceptual relationship between pointers and arrays.
- How to use a debugger
Perhaps the thing that is the biggest curve ball to students in 2341 is the scope and scale of the programming projects. They will be much larger than you’ve encountered in previous classes. This is intentional. Learning to take a really large project description and break it down into manageable pieces (said another way: how to functionally decompose a problem) is as important of a skill to develop as actually being able to write the code to solve one of those pieces.
Adding Timeout to Github Actions
To add a timeout to a Github Actions Workflow, add the timeout-minutes
to the workflow YAML file. See the red box in the image below for where to add it. Once you save, commit, and push that change to your repo, let your TA know and they will re-enable Actions for your repo after confirming the addition.
Old Python2 Code Causing you a Headache? Convert Python3 Automagically!
Do you have some Python 2 code hanging around? Found some example code for exactly what you’re trying to do, but it is written in Python2? Python 2 has been sunset for a while now. But converting your Python2 to Python3 can be a pain. Well, did you know there’s a handy little tool included with most, if not all, Python3 distributions? I’m using the Anaconda distro, and this tool is super helpful.
2to3 <filename.py>
– this will output a diff of the current Python2 code with changes that should/could be made, but it doesn’t modify the file.
2to3 -w <filename.py>
– this will actually modify filename.py
based on the recommendations of the updater. A backup of the original file will be made, so don’t fret.
Need more info? Check out the 2to3 documentation in the Python Docs.
Happy Coding!
What are the gcc system include paths?
The #include
preprocessor directive in c++ is one of the first things that people learn. They come in two varieties:
#include<>
– usually meant for system-level includes such asiostream
or other headers from libraries installed at the system level.#include " "
– usually meant for files included from a location relative to the code being written… for instance, another header file for a class you just wrote.
But, where are system level headers stored? On Linux with the gcc tool chain installed, you can execute the following command to find out:
g++ -E -x c++ - -v < /dev/null
-E
– Stop after the pre-processing step-x c++
– language of interest is c++-v
– verbose output
In the output, look for the section that starts with #include <...> search starts here
. A collection of paths is listed after this line which is where the pre-processor will look for any includes that are in <...>
(angle brackets).
FWIW, there’s also a way to include additional paths to be used as system includes on the command line when compiling code.
Customizing CLion
Some folks get a lot of enjoyment out of tweaking the UI of a piece of software. In an IDE like CLion, the color scheme used for the code editor is highly customizable. If you’d like to explore the settings and/or find a new theme for CLion or just the code editor, check out the CLion JetBrains tutorial at https://www.jetbrains.com/help/clion. Specifically, here are some tutorials you might want to look at:
- Colors and Fonts
- Switching Between Schemes
- Setting a Background Image
- User Interface Themes (This is not the same as color scheme from the first link above).
Docker and MySQL
Containers are all the rage, and Docker is the container engine of choice these days. So, I wanted to provide this tutorial for setting up a MySQL server instance in a Docker container.