College Programming Course Files on GitHub
As I was cleaning off files on my computer recently, I found files that I had from college. Some of these files were from the classes that I took. Some are from the classes that others took and I helped them with their coursework.
I figured I would share this code online for several reasons. I outline these reasons below and provide a warning for students that are currently in college.
Reason 1: Reference Material
When you get started in your career after college, sometimes you may want to refer to those programs or code that you wrote in college. Sometimes the code or components that I used, like a regular expression that validates email addresses that I used in my MIS 320 Application Design class, still works today. I will be honest, I have never sourced that expression from my old code, but I do remember it being there and could use it if I needed to.
Reason 2: See Your Growth
In order to see how much you have improved in your skills, you need to have evidence of what you previously did (see Reason 1). By saving my work from when I was in college, I am now able to see how I previously wrote code.
When I was in college, Visual Basic and C++ were the primary languages being taught. As I am writing this post in 2020, the primary languages that are being used are C#, Python, Java, and Python. If you are writing new code in Visual Basic, you will probably get laughed at or questioned unless you are writing a macro for a Microsoft Office program or something similar.
As you can see, what were the primary languages circa 2010 and what they are circa 2020, have changed. This change is in part, has been because technology has moved towards using more web-based applications instead of desktop applications, increased use of technology on mobile devices, and designing applications and websites that work on multiple platforms.
Reason 3: Portfolio
Once you get close to graduation, you will begin to look for a job in your field. More and more employers are more concerned with the work experience that you have instead of your GPA or the institution that you attended.
Why is the case? In some schools, it is easy to cheat and pass a class. While cheating can get you suspended or expelled (there were some in my classes that did get caught), learning how the tools used to detect cheating can be scapegoated. Long story short, you can pass a class and not learn anything from said class.
When you talk about your experience, sometimes they will ask to see your work. As I have previously conducted interviews in the past, the reason that the interviewer wants to see your existing code or to write out code in an interview, is not necessarily to see if you will get the coding problem correct. It is to see how you think and whether you understand coding design patterns.
Why Not Focus on Getting Coding Problems Right?
There are many ways to write code. For example, in C# (C-Sharp), which of the following code blocks is correctly written?
int x = 1;
x = 1;
Some would say that both are correct because they do the same thing. Figure 2 takes more steps to accomplish the same task. Some would say that Figure 1 is correct because the code is more concise.
In my opinion, they are both correct for the reasons stated. However, if you are following design patterns and principles like SOLID and DRY, you would know that Figure 1 is the best way of writing this code.
Experience vs. Grades
Please do not mistaken what I mean when I say that experience is more important than grades. That does not mean that you can fail your classes and still be successful. While grades do not necessarily reflect ones skill set (because of built in biases in exams and curriculum), they do reflect the level of commitment that an individual had during their collegiate tenure.
Experience is valued more because you have demonstrated your knowledge in a given subject. What are examples of experience that you can gain?
- Interships Both paid and not paid count. This will give you the least experience points because they are only done for short amounts of time (usually during the summer).
- Co-op. This is a program where the college or university partner with a company that allow you get on the job training and work while enrolled in school. This offers you greater experience points in my opinion as you usually work for an entire year full time (alternating school semesters).
- Running a business Want to build websites for a living? Then starting a business doing that is the best way to gain experience. The involvement required to run a business, will earn you way more experience points of all because you have to have multiple skillsets to run a business.
Word of Caution
If you are currently enrolled in school, I would not suggest that you post the code that you are working on online until after the end of the semester or school year. Why not? I have ran across some Reddits and forums that mention how some students posted their homework online. Then one of their classmates did a search and was able to find it, copy it, and turn it in. It was all downhill from there.
In one instance, the original writer of the code posted asking what he should do about his situation. The teacher ran the code through a plagiarism tool. This tool compares your code to the code of other students and provides a match percentage of duplication. This is a common practice with schools that have large number of students taking Computer Science courses. In this scenario, it flagged the code of this and another student's as they were exactly the same. This resulted disciplinary action being given to the original writer of the code as he submitted his assignment after plagiarizer. However, the date and timestamps on GitHub, showed that he had wrote and committed the code before the plagiarizer had submitted his homework.
I do not know how this situation ended. However, it could have been avoided by the original writer not posting his code online until after the assignment due date had passed.
Personal Experience - MIS 320
Personal Experience - CS 375
In this course, there was a similar incident to the above that took place. We had a homework assignment that was to be completed individually. One of the classmates, whom I also worked with at the university's IT department, was in the same class. The entire class managed to struggle with this assignment, so most turned in what they had working as we were told to turn in what we did have working and we would at least get some credit for the parts that did work. This student managed to get it fully working and shared it with some of the classmates that he sat near. That was big mistake as his code matched 2-3 other students in the class (the ones that he sat near or was friends with). The teacher immediately reported this Academic Misconduct to the dean's office in addition to making an announcement in class about the infraction and the action that had been taken. From what I recall, the student that provided the code was immediately suspended and lost his job (as he was a student employee, but no longer a student), and the other students that plagiarized the code were forced to drop the class (thus impacting their GPA and possibly delaying their graduation). In addition, all the students involved, have the Academic Misconduct on their collegiate records.
Putting your code online further validates that you have experience in the IT (Information Technology) industry. Furthermore, if perspective employers want to see your work, they can do so at their leisure. However, posting your code too soon, can result in your career path being altered in a way that you would least expect.
I am not sure if my perspective employers looked at my GitHub repos when considering me for a job. However, I do provide this information to further backup my claim and discussions of my past programming and technology experience.
Even putting code snippets online will help you out as they can be searched and used by yourself and others.