Dear Sophomore, from Junior: Computer Science and Engineering

A deep analysis of the 3rd year of my bachelors degree in CSE

Joel V Zachariah
20 min readJun 25, 2019

This is an introspection over my 3rd year in Computer Science Engineering (CSE), where I make an attempt to find the ups and downs in time, and hopefully, provide insights for the next batch of juniors of CSE to take a few tips to class.

My third year of engineering has been quite transformative in many ways — From realizations about the ideal outlook towards the world, to comprehending the deeper meaning of the lessons I have experienced, I have unlocked a lot of my inner barriers and come to appreciate the changes that have happened over the months. While I try to better substantiate what I mean by that, I want you to understand that not everything can be put to words and somethings are better left to be discovered in the time to come — for the first impression is the best one, and getting that in life is more valuable than reading it from this write up.

I believe you completed your sophomore year and are looking forward to understanding what awaits you in the next two semesters. This write up starts from the very moment I published the predecessor article to this one, so be prepared to read the moments that came to be in 350 days ever since.

Let us take an equanimous view of the entire year and understand what lies in your next lap.

Photo by Ales Nesetril on Unsplash

An Overview

The third year explores topics that most people do not think much about. It has to do with the fact that these are quite core and important that the terms are not thrown about casually as Machine Learning or Web Development.

Note: For every subject, last two modules were taken in a hurry so the important parts of many subjects are still a mystery to me as I did not spend time learning deep and clear.

The Fifth Semester

  1. Theory of Computation
  2. System Software
  3. Microprocessors and Microcontrollers
  4. Digital Communication
  5. Graph Theory and Combinatorics
  6. Soft Computing/Logic for Computer Science
  7. Design Project

Of these subjects, I enjoyed learning GTC the most. DC and SS were not challenging but not too exciting for me. TOC and SC were interesting to learn but hard to score. MM was really really challenging.

TOC: the first word that hit all our minds was Alan Turing — his intellect and his life struggles. However, the syllabus gives little attention to the historic significance and dives right in to the principles. I found it to be an intersting subject — in many ways, the first few modules were nothing but puzzle solving to find patterns and to use it to generalize the behavior of the system. You learn about state transition diagrams, regular expressions, deterministic machines, degrees of freedom and a true Turing Machine (something I am yet to properly comprehend).

The textbook is beautifully written and I would recommend everyone to give it a read! But considering what busy lives you will be leading in your third year due to commitments, you will not find the time and resort to last minute hacks or someones crisp notes — which is also probably not perfect.

For me, the final exam was doable but I did not study the proofs and explanations for concepts (I only focused on the math) thus lost quite some marks. Overall, it is a beautiful subject if you are willing to put in the time to learn from the first principles. As an addition, we had a good teacher so she simplified the math understanding concepts.

Why study TOC? It is the foundation for many concepts you will learn in the future. In fact, you start to understand how does the computer understand what you communicate through the logics you learn in TOC.

SS: We had a difficult time learning this subject in class due to lack of synchrony between our professor and our batch. Explaining anything further would create unintended impressions so let me talk about the subject. In System Software, you get to understand how different modules of the computer work together for seamless functionality. It seemed difficult in class but the textbook very well explains concepts and makes it interesting. Your ability to score marks depends on the level of clarity with which you are able to learn the concepts. Most of us (including me) resorted to by-hearting sections but I strongly believe if you spend time understanding the foundation there is nothing much to memorize blindly. Overall, a scoring subject with easy to understand concepts if you have patience to read.

Why study SS? You get to see the different sub modules of the computer system that work together to save you the worry of how it works internally. You see how the program ensure your system keeps going. You actually get to see the code of an assembler! The very same thing that translates your code to machine readable format! I know that might not sound exciting but that is the kind of stuff you get to explore in SS. A lot of programs, now that I think about it but all for you to understand how intricate and well designed out computer really is.

MM: I found this subject really difficult initially. So many diagrams to memorize and so many internal functionalities to keep in mind that it is challenging regurgitate it all for the exam. But the more time I spent by-hearting stuff, the easier it became to recall and then my focus shifted from the structural difficulties to the core performance. I admit there are a lot of diagrams to learn and a lot of points to remember but eventually you will see a pattern and figure out how to derive a thought process path from it.

If a question comes to explain a particular IC, you will be able to draw the diagram — which should give you the momentum to explain further. Practice is the only way to conquer this subject (every other subject too but not too many quick hacks for this one).

Why study MM? Looking back, the subject was to introduce to us students how these circuits were effectively built to carry out highly specific task. If you spend enough time trying to understand its functioning, you will be amazed to see how thoroughly thought out its working is, from making use of every phase of transfer cycles. It sounds a bit nerdy I agree but if you look at it from a puzzle makers point of view, you start to answer questions like: How should I design to ensure I need minimum ports but maximum use? What are the functionalities that are important and what can be derived? In time, I hope you gain enough practice to appreciate the intricate detailing of each unit.

GTC: I have nothing but very good things to say about this subject. We start from Konigsbergs problem and the hunt for its solution takes us all the way to Euler Graphs. It is very much puzzle solving and fun to learn. No heavy duty by-hearting cause even the proofs are quite intuitive. Towards the end you learn Djikstra’s Algorithm and sit in awe at how simple yet powerful it is. The exam questions are thorough and examine your level of clarity with the subject. If you have a good teacher like I did, chances are you will love it for the rest of your life. And if you don’t, drop me a mail and I will try to win your heart to love Graphs.

Why learn GTC? Graphs have many real world applications from google maps to traffic scheduling. Even in network systems it helps to understand the nature of the system so the graph principles will be of great help. It is a delight of a subject to take a bite!

SC: An elective, here we take a step towards understanding the building blocks of Artificial Intelligence — Neural Networks. The syllabus nicely covers the key concepts and urges students to dive deep (which most of us do not, unfortunately). I enjoyed studying it, especially for the math parts but for exam a lot of emphasis is there for the facts (which, as in the case of TOC, I did not heavily focus). Towards the end you get to learn Genetic Algorithms and due to time constraints it did not get clearly understood so I resorted to by-hearting. The good news is if you have time to understand from first principles, this can be an easy subject.

Why learn SC? ML is the hype and it helps knowing the foundation of AI. Also, people said it is better than the other elective.

I did not take LCS but based on what I understood from those who did take it, it is the continuation of Discrete Computational Structures and it quite challenging to learn. Looking back, however, at times I wish I learned LCS because when I was reading about computational philosophy (something I came across on the internet) I realized how important is that subject. I hope to indirectly learn it now.

DC: This is a well structured subject that helps you understand how digital input signals get converted to analog output and vice versa. Each section is straight forward and since we had a good teacher I did not have a hard time comprehending the points. Exam was quite direct as well. Textbook was good (just as for other subjects) but I did not invest enough time.

Why learn DC? It is the foundation for future subjects and essential knowledge for us. You understand how does communication happen in the real world.

DP: This was another difficult subject like SS for us. We had 3 stages:

  • Team members take four products that fall under the same category and high light the plus and minus of each (eg: Swiggy vs Zomato vs Uber Eats)
  • Team sits together and prepares the Software Requirement Specification Document for the combined product that fixes the aforementioned problems.
  • Team then condenses it to make the Software Design Specification Document to indicate how developers can build it.

The good news is your professors will explain how to do it. But the heart breaking fact is that he/she can and will ask you to redo the entire document if a minor mistake is there. We had to print our document countless number of times as a result but in the end truly understood the structure of the document.

For 5th semester, my GPA was 8.3. I have gotten to the point where I do not comment about my score anymore as it is futile as I do not learn from my mistakes.

The Sixth Semester

  1. Design and Analysis of Algorithms
  2. Compiler Design
  3. Software Engineering
  4. Computer Networks
  5. Principles of Management
  6. Natural Language Processing/Web Technologies
  7. Comprehensive Evaluation

DAA, CD, POM were very interesting for me. CN, SE — not so much. NLP was challenging towards te end.

DAA: Remember learning DS in S3? This is the continuation and it is beautiful! You get to analyze algorithms, use new techniques and in general get a better sense of what efficiency means. Our professor took a lot of time to explain the fundamental concept of O() but finished P vs NP in 1 hour — that is my only complaint. Exam was difficult however as only someone with fine understanding and quick thinking could ace it.

Why learn DAA? Algorithms are generally interesting for us who love problem solving and this subject feeds you with puzzle after puzzle. You should actively look for scope beyond syllabus to hone your skill and appreciate what you learn. I will always cherish learning this subject.

CD: Continuation of TOC, you understand how does the system comprehend your program — the art of parsing. You learn about abstract syntax tree and how its is interpreted by the machine. There are a lot of noteworthy techniques and methods that are followed to simplify productions and generate the grammar that gets your work done. Exam was challenging because I did not study study deep and practice enough.

Why learn CD? You will understand the art of parsing — that is, how does the computer understand. I think I oversimplified it so believe me when I say it: The subject is fun if you take the challenge and go deep.

SE: You are introduced to the real world industry problems and how efficient project management → from idea inception to maintenance. There is a lot to by-heart but a lot of research work to appreciate how people analyzed the system to draw conclusions and figure out best practices to get work in to production. A lot to memorize indeed for the exam, but beyond that, it is systems and how we can ensure work progresses.

Why learn SE? I am not precisely sure, because there is a subject called System Design that is more industry applicable than thus it seems according to what Seniors say. However, Software Engineering gives you a foresight into how work is managed in the industry.

CN: This is a deep subject that takes you from the basics of internet to how information is passed across various protocols and systems. Some sections are less challenging than the rest but overall it is interesting if you are willing to spend time to understand if from first principles — especially the last two modules.

Why learn CN: I am currently interning in a company that focuses on Network Infrastructures and seeing the application I can see that this subject has far reaching utility. A simple Google search will justify why.

PoM: A subject on Management — how to be an effective leader, how to manage teams and the different styles of management adopted in the real world. Exam is scoring but you get 1000% only if you can use the right terms and phrases.

Why learn PoM? Though it is true that experience is the best teacher, this subject gives you a conceptual understanding of how your choices matter while managing a system.

NLP: (Elective) Yes, This is the one that is about understanding english. You revist your grammar basics initially but quickly get to the sections that show the math behind parsing the sentences and figuring out the right parse tree to use. Exam was quite hard however.

Why learn NLP? Might help you for your final year project. You are learning a field that is actively being researched today.

CE: You are tested on the subjects you learned thus far from the previous years. There is (1) Internal Viva by faculty members [this was when I developed immense respect for my HoD] (2) Internal written test (3) External Viva by Ex-MECians [this was when I realized how important academics is in life] and (4) External written test. Subjects are : Graphics, Mechanics, two math subjects, DCS, DS, TOC, PDD, COA, OS. Though it seems scary at first, once you revise you realize the questions are not too hard. Written exam was of good standard how ever.

My S6 GPA is not out yet but since my exams were hard, I am expecting around 8 at best.

Overall, the second year of Engineering, in terms of academics

It is pointless. I know my flaws but did nothing about it. I ended up regretting not studying deep and having only peripheral knowledge — even that is mostly broken. There is no point in just passing exams by studying in the last minute — the real world problems out there are beyond six modules and we easily tend to skip that. For me, it was not easy to study when my heart was on other matters. A lot of what I said in the predecessor article still holds here — the ability to read textbooks without losing attention is highly underrated. No matter how many sophisticated Machine Learning Algorithms you may know, if your foundation concepts that you learn at college are broken, it is pointless. I wish you learned from my mistakes but chances are you will repeat it just like I did. Please prove me wrong.

Seeing my over-involvement in managerial matters, my Dad kept warning me of how I was dragging myself into a situation of deep regret for not focusing on academics. And guess what? He was right. When exams came, I resorted to shortcuts without understanding the foundation concepts, only wishing that I did when I had the time. Parkinsons law gets the better of me to waste my time doing mediocre work when I should be studying, especially when exams are not around.

Beyond Academics

The third year pushes you to level up your game — there are several avenues to take up more leadership responsibilities in college. The fourth year students are busy with placement preparation and final project works thus most of the major decision making processes and execution phases lie in the hands of students.

For me, the change started when I received a mail from Arya Murali of Rethink Foundation for a midnight call where she encouraged me to pursue my interests and continue to do good for those around me. I have written about this moment in more clarity over here. To put it in short, Sijo and Arya made me feel valuable in this world and helped me get to my feet. A lot of who I have become today attributes to their selfless support.

In the summer of 2018, Adarsh S urged me to keep a freeCodeCamp Challenge for our juniors — to ensure that they do not slack away and use their time to learn to code from the freeCodeCamp curriculum. I got to work immediately with the help from Bhairavi and Farha. We put up a google form, came up with cool SQL queries to filter out the deserving students (looking back it was a cool idea but a waste of time, to learn more read here). The plan was to mentor these students to code each day and track the points they amass — using which we generate a leader board to keep it competitive (web scrapping did not work out so we manually checked and filled). From 150+ students who signed up, after one month about 20+ students really started from zero level and got to commendable experience level. This was a true success indeed.

This experience urged me to think deeper — how can someone get good at programming? What are the steps in between? It was after quite some thought work that we settled for the 6-types analogy that I greatly evangelized in the months later. It was a road map to help beginners understand how to become good in tech over the span of a few years time and I wanted people to take up the mission to adopt this perspective in their actions.

In the summer of 2019, I went for 3 hackathons — all of which I have documented on medium. It was a good experience but made me realize how little programming I knew.

Arya and Sijo invited me back to work on their chat bot but I did not put in the effort so they dropped the plan. I feel sorry for that and wish I was more disciplined to stick to it.

In college, being the chairman of D.E.B.A.T.E. Club helped me get over my stage fear because if the leader was imperfect, the rest would settle for mediocrity. I pushed myself to lead sessions — which were awkward initially but gradually I realized the components that make it feel so. Now we are trying to create a new supportive environment for students to get over their fears and gain confidence in oneself.

At one point of time, we collectively tried to find ways to help our juniors in their academics by connecting them with seniors who aced in it. I felt it is important to have such conversations as it helps one develop their understanding of concepts instead of brushing it aside as being nerd-ish. I had the honor of not being made fun of by my peers thus my confidence in developing the system increased as no one ridiculed me. I understand not everyone gets this supportive ecosystem so it became one of my foundation principles I abide by.

Also as the joint secretary of FOSSMEC, I had the honor to serve the community by developing student skill development opportunities. Looking back I realized how that deviated from the core message of promoting FOSS but it was the need of the hour and no other club in the college was taking the steps.

We arranged a session for our juniors on how to prepare for the Google Summer of Code and improve your chances of winning it. You can find the write ups of these and several other initiatives of ours on the FOSSMEC Publication. Many first year students were inspired to take up programming seriously as a result or at least — it started the conversation at an earlier stage. This was possible only because more than one from our batch strongly believed our juniors should not miss out in opportunities due to lack of guidance.

Moving forward, the next major point I can remember is PyCon India 2019. I had the courage to present a lightning talk in front of 500+ attendees to talk about the 6 types analogy and it was quite well received! This was the moment when I decided it needs to be more than just an idea — it needs to be a system.

I applied this idea for Mozilla Open Leaders Program (I had tried once in the summer break and got rejected) and after a few weeks of anticipation (just kidding I had forgotten about it) I got the good news of selection. In the next 14 weeks I got to attend webinars along with fellow leaders from different parts of the world and made friends beyond boundaries. Now the idea is towards fruition as a platform to help everyone become Type A’s.

After Excel 2018, I got involved in TinkerHub Community and got the opportunity to work on an idea of Gopi Chettan — an app to socialize developers based on locality. With a team from college, we hope to get to it in the time to come.

Speaking of beyond boundaries, I applied for every round of the Pioneer Tournament and documented the same on medium. I got feedback for all of my ideas and it was a good experience. In fact as part of Pioneer Tournament, I got to have video call with Peter Koomen and a team from Italy — humbled to gain such opportunities.

Excel 2018 happened — but my contribution was poor. Nikita Mallya did most of the heavy lifting because I did not like feeling obliged to help — even though she gave me a window space to leave if required few months ago. It is one of those moments where you wish you had the courage to say no but rather chose to slowly yet bitterly hurt the other person. She has looked beyond that incident and now we are in good terms, but I am disappointed in myself for not being there for her when she needed help.

Another person I dissapointed was Aravind, previous Content Manager of Excel. He gave me an internship chance to write for an organization and get payed for it handsomely but I did not give it due importance and ended up submitting works with less quality and dedication. Eventually we stopped but he too has decided to look beyond that one incident and forgive me. We are in good terms now.

Seeing how they were willing to forgive me, I in turn forgave people who disappointed me or failed to meet the set expectations. We live in a world where everyone is waiting to slap a label on you and make you stick to it cause they assume that is what you shall be. I have done that to others and realized how that limits their space for exploration. Yet, in a legacy system, someone has to take the chains when handed down — I did not pick it up for my eyes were set on another goal. I now understand why people disappointed me in the past — it was unintentional late realizations and the necessary step to rectify before it gets too late.

Sijo contacted me in March — urged me to continue encouraging others. He said I have a skill to help people recognize their value and I should utilize it as well as possible. Yes I shall, Sijo. Thank you.

In 2019, so many other transformations happened. I got to be the co-organizer of School of AI Kochi and Papers We Love. The latter is closer to my heart because I randomly stumbled upon it while surfing the internet and simply asked Hariraj K if we could start a chapter in Kochi — to which he not only said a yes, but offered to take the initiative to organize the sessions.

Both these communities are doing well and I can see the promising future ahead. I got to network with a lot of people, develop my ideas about improving quality of education and slowly chart it down. Hopefully in the next twelve months those ideas will bear fruits as I am trying to collaborate with equally passionate peers.

I applied for a lot of online programs like Girl Script Summer of Code but did not stick to it till the end. What a waste of a golden opportunity.

The tour with classmates for 4 days was fun as well.

But then the season of internships were another lesson for me:

  • I got shortlisted till the last round of VisualIQ’s internship drive, only to be rejected after interview. Reflecting, I was too casual and spoke informally.
  • I did not clear the MCQ test for Ansys’s Internship Drive test. My fundamentals of C/C++ was flawed.
  • I did not clear the computer test for Techvantage — simple 20 python questions.
  • I was rejected from Zauba Cloud after 1 hour video interview + test, Bangalore (startup) because my foundation concepts were flawed.
  • I finally tried for my cousins ML based company (I was against using personal contacts as it felt unfair advantage) when I finally get selected for Mettle Networks.

The internship is going well and I am learning a lot of concepts. I am trying to prepare for placements based on the tips provided by our seniors, and aim for uni for higher studies abroad on the side as per Nikita’s guidance.

My articles are starting to take notice in the community. People near and far mail me after reading a few, to follow it up with a few queries. It is a humbling experience to be able to help others and I hope to continue it in time time to come.

Looking forward, the future is promising — so many ideas to help the community develop and so many people to support (both ways) and so many waves to spread out. Only time can tell what is to come.

Conclusion

The choice is yours as to what you want to focus on. I spent time developing other skills but looking back, I wish I focused on my fundamentals that were being taught at college. There are so many more things I wish I could tell you in the hopes that you do not make my mistakes but if you can fix these mistakes that I made, it itself would be commendable.

Don’t get me wrong — I did a lot of things beyond academics and I am proud about how that translates to what it can mean tomorrow for you all but regret will always be there for the path I did not take.

People ask me why am I am hypocrite — why is it that I ask people to learn deep when I do not myself? Why do I push people to excel in coding when I barely do so myself? Why do I give guidance to others when I do not guide myself well?

I have thought about this heavily and this is the answer: If not me, then who else?

Those who are excellent in tech and specialized, do not go out of their way to help someone else because they know what is yet to explore and they want to invest in themselves rather than someone else — at least at that point in life.

The rest of us waste time living aimlessly, only to regret and wish someone told us before. But now time is short and you have got to save your sinking ship so you invest in yourself. You manage to get through but now time has elapsed and your juniors have reached the regret point in their life, only to complete the perpetual inefficiency cycle.

I hope to break this cycle by creating a cycle in place where people realize earlier on, actively work towards ensuring they develop the skill and and well prepared ahead of time. This cannot happen unless someone is willing to let to ship ‘supposedly’ sink for the upcoming ones to have a better chance. I am trying to take steps that are possible to help our juniors, so that they help their juniors and ideally we break out of the inefficiency cycle.

The good news is I am not alone. I have a lot of friends who agree about the problem and together we are actively working to fix this system in any tiny way possible. Just yesterday night Varun (a first year student) was saying how Adarsh S (my classmate) guided him and instead of accepting a thank you in return, Adarsh just asked Varun to help his juniors. Let us develop this helping mentality balanced with self skill development.

Currently, the only way we can sail forward is if todays hypocrites like myself are willing to pull up those who need help in the hopes that tomorrow, we all will do better than what we preach.

If you too agree your community seniors are unable to guide their juniors, we have good news — hopefully we will have a solution that fits in your system. So keep an eye out for future blogs

I hope the write up was mildly helpful for you as it was for me to reflect on my last one year. I wish I could write in more clarity and detail as I did last time but as the clock is nearing 1 AM and I have a lot of tasks to attend to, I shall settle for this. If you need any help, do not hesitate to reach out to me at joelvzach@gmail.com. I shall try to provide the help you request for if you really need it. Let us work together to ensure everyone else gets to maximize their 3rd year of Computer Science and Engineering Bachelors Degree.

Hopefully the next introspection will be in 2020 June. Until then, farewell.

--

--