Semester 1 Computer Science in a nutshell
Probably, I would write a series of my journey towards this weird and fun 4 years in the Computer Science program.
- Semester 1
- Semester 2
- Semester 3 (soon)
- Semester 4 (soon)
- Semester 5 (soon)
- Semester 6 (soon) # I don't know how many semesters I have 😆
- Computer Science in a nutshell (soon)
- Should you take it? (soon)
- Computing Mathematics 1
- Fundamentals of Programming
- Computer Systems and Organization
- Information Systems
- Philosophy and Current Issues
Currently, I study Computer Science(Artificial Intelligence). We use moodle, an Open-source learning platform to host our official Spectrum platform. In there, we record our attendance, assignment submission, open lecture's PowerPoint, and exam platform. But, the UI and UX are very bad in my opinion. Very very very bad.
Three-quarters of this semester is monopolized by tons of tutorials and assignments 😂 . I thought I would learn how to build software. Sadly, my skills are measured by my grades from the examination and total assignment marks. I always remember this quote from Paul Graham;
It's important for nerds to realize, too, that school is not life. School is a strange, artificial thing, half sterile and half-feral. It's all-encompassing like life, but it isn't the real thing. It's only temporary, and if you look, you can see beyond it even while you're still in it.
Disclaimer: All of this is just my opinion and thought. Don't take it too seriously. It is just what I've experienced. I'm writing this in between lots of assignments, so yeah.
Computing Mathematics 1
At first, I feel strange at the "computing" word. I thought I will learn the calculation behind the mainframe or microcontroller, or engineering stuff(I hope for Software Math like algorithm, not Eng. Math). But I was wrong, my expectation is far beyond this subject. The first lecture tells me what this subject really is and very relevant to my course title "Artificial Intelligence". So, I learn these ;
- Propositional Logic
- Predicate Logic
- Permutations and Combinations
Honestly, I just refresh my knowledge from high school. However, I was thinking, why didn't they teach stuff like calculus, trigonometry, and differential equations (I really hope I don't wanna learn this again😂). This question reminds me of this blog => Are we Really Engineers ??.
The claim that engineering involves a lot of hard math, while software involves very little math is a false claim(I also think this is true before this). The confusion here comes from our misunderstanding of mathematics.
Much of the math that mechanical engineers use is continuous math. This is where we work over a continuous domain, like real numbers. Things like calculus, trigonometry, and differential equations are in this category.
This is what most people in Malaysia learn in high school, codifying it as what they think of as “math”.
In software, we don’t use these things, leading to the conception that we don’t use math. But we actually use discrete math, where we deal exclusively with non-continuous numbers. This includes things like graph theory, logic, and combinatorics. You might not realize that you are using these, but you do.
Just because there are no integrals doesn’t mean we are mathless
My thinking of math change after learning this course. It opens me to the Math that we use in Artificial Intelligence like Graph Theory. I highly recommend this subject for AI students.
Fundamentals of Programming
Java, Java, Java
My Primary Weapon is Ruby on Rails, and If you've been in this awesome community, you would feel awful and yucky when using Java and look at its syntax. Even, DHH also(always) critique Java. But, I'm here don't want to critique anything, just want to learn the good of that language. Maybe, my mind is always thinking of the bad besides Java, I try to find the goods behind it. This reminds me of Sturgeon’s Law. Sturgeon’s Law is a maxim that says that 90% of everything is crap.
The idea behind Sturgeon’s Law is that most of what we read, watch, consume, buy, or review is crap, so there is no point obsessing over it or spending too much time thinking about it. Instead, we are better off directing our attention to the 10% that is not crap and that can benefit us in some manner.
Instead of critique the Java language, I try to find 10% good of it. So I learn it.
Java is Ok. It is great if I want to build a scalable app. I like its ecosystem, Intelij for IDE, Spring for MVC web framework, JavaFX for creating awesome GUI app, Tomcat for web server, Java static typing, awesome Baeldung tutorial, Kotlin and build native Android app. Even for IoT and microservices. Very very great.
But, there is an obstacle/difficulties for me to use it(for me);
- Not suitable for building an MVP app
- Hard to do simple things
For this course, I hate to do all the Tutorials and assignments (Haha). Maybe, I'm a kind of love real-world projects. Of all the assignments, I only enjoy doing this project: Build YouTube app. My bad assumptions of Java change to positive after doing this project. I open-source this project; Yuu-tube. We need to build a Youtube-like app in Java. I have experience doing this kind of project in Ruby on Rails, but not in Java. My team and I do a lot of googling on how to do this. Very hard for a Java beginner like me to build this project in the first sem.
I don't give up earlier, because I always have this mantra in my mind: Everything is Figureoutable. There is a lot of requirement to build this app based on the schema given like Authentication, compatible to all video format, CRUD function, Search function, User operation, GUI, database and so on. Whatever the situation, I just need to build an MVP only(this reminds me of Getting Real book by Basecamp). Let go of my perfectionist(we have a tight schedule). My team and I decide not to use GUI, because it will take time to learn. In the end, we build TerminalTube - Feel YouTube in your terminal 🔥. What a nice journey.
Java is great for Fundamental of Programming if the university changes the learning method based on current industry need.
Computer Systems and Organization
This course is very damm boring (I don't know if I get the wrong teacher or not). This is the syllabus ;
- Basic for Computer Structure
- Number System
- Boolean Algebra
- Function Simplification
- Basic Logic Gates
- Combinational Circuits: Latches and flip-flop
- Sequential Circuits
- Addressing Mode
- Assembly language
1 until 4 is easy. Until unit 5(Basic Logic Gates), I learn new knowledge which is K-Map. The idea is to minimize Boolean expressions of 3, 4 variables very easily using K-map without using any Boolean algebra theorems like this;
I learn the basic logic gates like AND, OR, NOT, NAND, XNOR, NAND. This is very fundamental which will use in the next topic: Combinational and Sequential Circuits. There are tons of new stuff I learn from both topics like SR latch(NOR & NAND), Clock, SR & JK FlipFlop, Master-Slave D FlipFlop, Truth Table, Characteristics table, Excitation table, State Table, State Diagram, State Equation, Counter, Register and so on.
I have good news for you, don't waste your time learning all this stuff at university. You can learn all this on Youtube. I recommend Neso Academy youtube channel. Very Comprehensive short and fun learning experience compared to the university, especially on its Digital Electronics course. Save your money for a good future.
The very big assignment that I need to do is build Traffic Light System.
You can see the assembly language code and details explanation on this Google Doc.
Again, I feel that learning from Youtube is far more valuable than learning from University. But, if you love hands-on learning, unfortunately, you need to learn at university unless you have money, then buy an electronics kit like Arduino or Raspebarry Pi.
In summary, I would say that you will learn all the business stuff in Theory Explanation. Instead of doing the real business, we urge to answer uninteresting assignments and essays.
This is my syllabus;
- Information Systems in Global Business Today
- Global E-Business and Collaboration
- Information Systems, Organizations, and Strategy
- Ethical and Social Issues in Information Systems
- IT Infrastructure and Emerging Technologies
- Foundations of Business Intelligence: Databases and Information Management
- Telecommunications, the Internet, and Wireless Technology
- Securing Information Systems
- Achieving Operational Excellence and Customer Intimacy: Enterprise Applications
- E-commerce: Digital Markets, Digital Goods
- Managing Knowledge and Artificial Intelligence
- Enhancing Decision Making
With all this Powerpoint lecture, I would rather read Startup or business book. For example, Zero to One, The Lean Startup, Rework, Blitzscalling, Founders at Work, Purple Cow, The Everythig Store, Traction, Shape Up, MAKE and other countless great book.
Right now, I self-study business, and more on books for real-world startup knowledge. Soon will launch any of my side projects 😊. Whenever I start the real, the real becomes learning.
Philosophy and Current Issues
The last one. I learn the definition, meaning, concept, purpose, and history of philosophy knowledge.
I just found out that philosophy has Two subdivision. The first is Theoretical Philosophy and the second is Practical Philosophy. In Theoretical Philosophy, we have metaphysics, Epystimology, Physocology and Logic. In Practical Philosphy , we have Ethics, Politics, Economy, Civilization and more.
I would rather read History books compare to this PowerPoint lecture.
I've never like "Computer Science". The main reason I don't like it is that there's no such thing. Computer Sci. is a grab bag of tenuously related areas thrown together by an accident of history, like Yugoslavia. At one end you have people who are really mathematicians but call what they're doing computer science so they can get DARPA grants. In the middle, you have people working on something like the natural history of computers-studying the behavior of algorithms for routing data through networks, for example. And then at the other extreme, you have the hackers, who are trying to write interesting software, and for whom computers are just a medium of expression, as concrete is for architects or paint for painters. It's as if mathematicians, physicists, and architects all had to be in the same department.
Bundling all these different types of work together in one department may be convenient administratively, but it's confusing intellectually. That's the other reason I don't like the name "computer science".Arguably the people in the middle are doing something like an experimental science. But the people at either end, the hackers, and the mathematicians are not actually doing science.