For What It’s Worth: My College Education

Introduction to This Series:

I have always been interested in the idea of value, asking questions like, “Does anything have an objective value? Are we born with a set of values that are tied to survival? Why do people’s values hardly ever align?”  There are two definitions to the word “value” in those questions, one is the literal assessment of worth, and the other is the subjective desires of an individual.  Both link to worth, so I often find myself wondering what has worth to me.  I plan on writing many pieces on what I think has worth and ultimately defining my values.  I still seek out an objective answer to “What has worth?”, but so far I have been unsuccessful in my self-inquisitions.

Education:

Education is something that I think may have the most objective value, I often say, “Knowing is better than not knowing.”  I bet many people have examples of when that’s not true.  From my perspective as a 21 year old, I’ve spent practically my entire life in school working hard to get an education.  If I had to subscribe to a philosophy I would most likely choose pragmatism, following many teachings of the great American Philosopher, John Dewey.  Learning is not only necessary in survival, but imperative in self-growth. This post is dedicated to my experiences in university and what they are worth to me. For clarification, I will be mostly speaking on the actual learning material I garnered knowing fully that college isn’t all about books. I will pepper in life lessons learned outside of class to showcase my college experience when not studying.

University:

University is not right for everybody, but it was for me. I already had a strong skill set in computer networking and hardware from my time spent at the technical high school I attended alongside my public school. (Photo for my own personal embarrassment) With this skill set I could have been some Best Buy Geek Squad worker, or further my knowledge and study computers in college. I wanted to help people, and I knew I would be able to help more people if I got a degree. Plus my mom sorta made me. So with little clue of what each major meant and specialized in I chose to study Computer Engineering, a decision I’ll comment more on later. As far as where I wanted to study, the options were slim. I needed somewhere cheap, in California, and top of the nation for computer engineering. The most logical fit was Cal Poly SLO, and somehow they let me in. What I wanted most out of the next four years was to find a purposeful career path. Now that I am near graduation I have a very good idea of what I want to spend my life doing, so I’d say it was a success.

Cal Poly:

California Polytechnic State University, San Luis Obispo commonly known as Cal Poly SLO is undoubtedly a unique university. Consistently ranked among the top engineering universities in the country, this campus has everything and more to offer its students. The school has a wide range of diverse opinions and interesting people, with 6 colleges, over 60 majors and more than 300 clubs. I spent my extra time getting deeply involved in the nationally recognized orientation program, founding a social fraternity, and holding an on campus IT job for three years. Something important to note before I go into detail about what I learned here is that Cal Poly is on the quarter system. That means that each class is ten weeks long and there are four periods of instruction (including summer). Some say its not enough time to internalize all the important information, I say learn fast or die trying. I guess it’s no surprise that many die trying, the university has a 40% four year graduation rate (and that’s for all majors). Engineering, let alone computer engineering are much lower. The reason why I am graduating on time is because I spent every summer in summer school and had AP credits transfer, in the end I had 28 units completed outside of Cal Poly. That’s about two quarter’s worth of classes, which freed up my schedule a little each quarter. Not to mention I gamed the system for a while by sitting on a “presidential committee” that gave me priority registration for a year. The biggest complaint among students is the congestion of registration and lack of offered courses. The computer science department has been fighting for more faculty for a while, but teachers get paid terribly and engineers that want to teach are hard to come by. With all that aside, I learned a lot. I can confidently say I know how computers work, from transistors to high level programming. I will do my best to explain my education in the following paragraphs.

 

Freshman Year:

Fall 2013:

Coming to college with little to no coding experience was daunting because as I soon found out many students had already taken AP Comp Sci in high school (too bad it wasn’t offered for me – if only uniform education was a thing). My first quarter I got introduced to code with CPE 123 – Intro to Computing: Computational Art. The class taught a sort of baby Java called Processing where we designed basic figures with simple geometric shapes, like penguins and fish. For my final project I got carried by a coding wiz named Christopher who taught me my first important lesson. Just because you aren’t as good a coder, doesn’t mean you can’t help. We built a fun interactive game that opened a chest and shot out fireworks on a mouse click.

Winter 2014:

My first real coding class came in the form of CPE 101 – Fundamentals of Computer Science 1. It was C. This class taught the basics, conditionals, loops, functions. I don;t remember any specific projects, but I remembering thinking, “Code is magic, but I hate having to type semicolon at the end of every line”. This class got changed when I was a Junior to python, probably would have thought the same thing, but instead said, “I hate having to indent everything perfectly”. Either way, it was a proper introduction to a classic language and many classes down the line were in C so I appreciated the intro. The other CPE class I took was CPE 141 – Discrete Structures, this was all about ways to store data. It went well with the first intro class because it showcases things like arrays, and how data moved around the computer.

Spring 2014:

Like many classes in my major, they were apart of a series of courses. What came after CPE 101 was CPE 102 – Fundamentals 2. However, this was in Java, for whatever reason. This course taught more advanced data structures like linked lists and basic algorithms like search. Up until this point all I knew was imperative and functional programming. With this class I was introduced to object oriented. I don’t know if I skipped a class or something, but to this day OO is weird to me even if it is most logical and explicit. This quarter also marked the beginning of the electrical engineering courses. EE 112 – Electric Circuit Analysis 1 was all about Ohms Law basically. It taught what current was, how voltage controlled it and how resistance managed it. This is where the CPE’s started wishing they were CSC’s. I was different, I enjoyed the math and was curious about electricity so I had fun.

 

Sophomore Year:

Fall 2014:

For CPE’s sophomore year and junior year are by far the toughest. There are many pivotal classes that make or break your career. If you fail anything, you will be held another year. It was also difficult because each student was required to take many other difficult courses outside the major like physics and linear algebra. My first quarter I was in CPE 103 – Fundamentals 3, CPE 133 – Digital Design, and EE 211 – Electric Circuit Analysis 2. 103 was also in Java and went over more complex algorithms and data structures like hash maps and sorting. 133 was the first real computer engineering class where we learned assembly code and what was going on under the hood with C. I really enjoyed this as I got to see what the machine sees, how the CPU runs instructions. We also worked with FPGA’s like the Nexys 2 board and learned the basis to VHDL. EE 211 was tough, it was all about op amps, RLC circuits, and phasors. Capacitors and inductors were now about of my circuit toolkit. This was about the time were things got really confusing. Like when you do a lot of multiplication and division, addition and subtraction start to seem weird. I found it difficult to visualize how the electrons were reacting to these new elements, so it was then difficult to understand the basics as well. Plus, mesh analysis and superposition are freaky.

Winter 2015:

I took it easy this quarter, I was worried about my GPA and wanted to keep above a 3.0. I took only one major course: CPE 233, the follow up to 133. This class was a bit more fun than the last, because we got to chose our project. We got to build a CPU with assembly and VHDL. It was complete with adders, registers, and stack. The final project my group member and I got to experiment with VGA and designed a tomogachi knock-off with a feed and kill switch. It was actually amazing.

Spring 2015:

Another more relax quarter, because at this time I was sitting on the exec board of my fraternity and a team member for orientation. I took the last circuit analysis class EE 212. Finally the whole picture was revealed to us, AC power did exist and it was super cool. Transformers were added to our toolkit and a new domain was understood, frequency response. It was interesting and enlightening to grasp the relation between magnetism and electricity more fully. Both are incredible forces in our universe, that are very much related. I also took a modern physics class, and learned E=mc^2! Quantum physics isn’t that bad! What is hard is grasping that energy is a wave and a particle always, kinda?

 

Junior Year:

Fall 2015:

This was my hardest quarter at Cal Poly. The hardest EE class and hardest CSC class both in the same quarter, what was I thinking? CPE 357 – Systems Programming, this class is notorious for failure, and it was a prerequisite for practically all upper division courses. It had been awhile since I programmed in C, so when this class came around I was blindsided. 3-5 labs a week, 3 huge projects, 6 midterms and a final. This class challenged me beyond any other to date. But after, I knew I could program, there was no doubt in my mind. This also introduced me to a terrible pain I later coined as code migraines. No special project, just constant code. EE 306 – Semiconductors was all about NMOS/PMOS dioeds, transistors, and BJTs. So much crammed into one class, not to mention the hardest EE professor who made my cry in office hours. I appreciated learning how doping works, but really didn’t appreciate learning about technology that was obsolete. Finally I had EE 228 – Continuous Time Signals and Systems, which was all about the frequency and time domains, and a bit about foureir transforms. What I learned most from this class is how a function is just a black box with an input an an output.

Winter 2016:

My last EE course, thank god. EE 307 was amazing, in it I learned about building all sorts of gates/adders/multipliers with transistors. This really wrapped up electrical engineering for me because I could truly understand how current made decisions in a transistor network. Realizing the massive scale of these networks in our everyday devices was eye opening. Moore’s Law was shown to me and I was skeptical and bewildered. I was also really glad to not have to draw any more circuits, because straight lines aren’t my thing. I also took CPE 315 – Computer Architecture this quarter which taught me about some important features to computers. With this class I found out I loved computer history and started reading about John von Neumann. It;s incredible to think that 99% of computers out in the world follow the same style of architecture. I also took technical writing and stats, which I loved and wanted to do more of after school.

Spring 2016:

My first really fun quarter! I took CPE 329 – Microprocessor Based Design, where we wrote C to control a small board. This class was great because of the free form final project. My partner and I chose to build a heartbeat sensor utilizing a photosensitive diode and bright LED. CPE 453 – Operating Systems was the second of the “big three” 357 being the first. This class went over every major OS related subject, from scheduling to file systems. The final project had us create a mini file system similar to Unix, the code ended up close to 2,500 lines all in C. I respect the early programmers so much after this class. It helped me realize just how much code is out there in the world, and somebody had to write it. Finally, the most pivotal class in my college career: CPE 480 – AI. I learned so much in and out of the classroom for this course, read numerous books/research papers and watched many presentations. This marks the period in my life where I finally decided what I wanted to get in to. The project I worked on was a machine learning model to predict stock valuations using twitter sentiment data. This was only to be the beginning. I also took a social ethics course with peaked my interest because AI has many social implications that I hope to solve in my lifetime.

 

Senior Year:

Fall 2016:

Senior year, the final stretch, with an end in sight I wanted to utilize my time looking into what I would do after university. I took CPE 349 – Algorithms, which was a bit of review for me, but allowed me to practice my python skills, which until them were terrible. Looking back on the programs I wrote I see how crappy they were, but you have to start somewhere. CPE 365 – Databases was the second technical elective out of three that I chose. It was all SQL all day, just like 357 this course had an excessive amount of work. But at least now I can say I know SQL like the back of my hand. For the final project I built football statistics app utilizing JDBC. This quarter also marked the beginning of Capstone, a 2 quarter long project based course. I was apart of the group that was tasked with redesigning an outdated home inspection app. I was the program manager and led the team through the process of prototyping and initial coding for the iPad app.

Winter 2017:

The second quarter of Capstone was in full swing and many of my weekends were spent in the computer lab programming in XCode. I learned that planning is the most important part of any coding project. I learned that by not finishing the project in the amount of time we expected. I guess I also learned to manage my expectations. Lastly, I learned that college is full of busy students and not everybody is somebody you can rely on. The last of the “big three” was also this quarter, CPE 464 – Networks. I loved this class because it was all about the internet! TCP/IP protocol stack was the name of the game. I build my own messaging app and even my own ftp server, from scratch. This was the class where I wrote the most lines by myself for one program, around 1800. I also started my senior project, which is another two quarter long class. I decided on building a machine learning and computer vision slither.io bot.

Spring 2017:

My last technical elective was spent on CPE 466 – Data Mining. So far We have surveyed basic rules mining from web data and supervised/unsupervised learning. Pretty much all major coding is in python (some SQL), and I am finally getting good at using python. I’m also finishing up my senior project.

Conclusions:

Cal Poly has given me so much knowledge, most of which I could never have even thought of learning. I’m very proud of my education, and am hopeful to learn even more in my future. My university career has given me passion and guidance to follow my dreams of programming AI applications. If I learned anything it’s this: “Life is full of things to learn, never be complacent, always improve and always strive to be better. If you try everyday to grow your skill set and understanding of the world, you will die happy.” It may seem morbid, but to me it’s just realistic and simple.