Author Archives: Luis Lua

Reflection on Final Presentations

During our last class, we had our Final Project presentations. From Python to HTML, every group chose to work on different tools for their project. Through these differences, I wanted to analyse the process and result of the projects to understand what is common in technology-related projects.

First of all, one thing that all groups had in common was the constant help from search engines.  Since we only covered basic concepts from the tools available to us, every group used Google to gather information on the background, application, and debugging of their respective programs. In our group, we constantly used Google to search for courses on how to write and implement HTML code for our personal portfolio website. In an age where information is at our fingertips, the learning process is slowly separated from only being taught in colleges to being accessible online. This way, it is possible for anyone to learn anything new as long as they have the time and internet access needed to learn.

Apart from the code itself, most projects served a particular purpose to solve or explain a problem. Unlike the way that Computer Scientists are portrayed in mass media, they do not just sit and write code all day for a boring purpose. For example, Kate’s project expanded beyond learning how to write HTML to teaching others about the consequences of putting our information online. Therefore, coding is not just about code; instead, it is about the purpose for which the code is written for that improves or damages our society.

Through this analysis of the project presentations, I learned that technology-related projects share two things in common: using search engines to gather new information, and writing code to solve a particular problem.

CSC105 in the World of Programming

Most computer science students choose to follow such a career because of the high-level implications of writing code. For example, introductory programming course focus primarily on writing code to solve small problems. With this teaching method, a lot of the foundation algorithmic thinking that we learned in the class is not taught to most students. Building blocks like binary representation of numbers and string, image representation, history of computing, ethics and so much more was never taught during my 3 years of programming experience. During our lab today, I reflected back upon the purpose and content of the class in the broader view of the Digital Age, such as what I will work with as an intended Computer Science major, and my role in the programming world.

Although most of the students in the class are not Computer Science majors, but CSC105 is a class worthy of explaining low-level concepts in a fun and interactive way. Although it is not easy to explain concepts like machine language and sorting algorithms, they separate a good from a great programmer. In essence, this class prepares us with a solid foundation for the endeavor of a Computer Science major.

When we discussed the ethics of writing code, there is a fine line between writing code aimed at improving or harming society. In fact, an article that we read covers the perspective of a programmer writing code for the military, which is used to target and kill people. After the reading and the lecture of ethics, I wondered what my code can do to better society, but also what ways it can be used to inflict harm. Just like academics in other fields discover and reviewing new information about their areas of study, programmers take a big role in the future of the Digital Age. Therefore, I wonder how code can be determined as good or bad since one program can do both depending on the user.

Complexity and Quantum Computing (Blog)

In class, we discussed the Computability capabilities of modern computers. Although they are exponentially more efficient than their 40-year old counterparts, computers still struggle what can be computable. One way to approach this issue is to improve the amount of steps that an algorithm takes to sort or search through a list. For example, a linear search requires an n amount of steps to achieve while a binary search requires a log2n steps. With lists containing thousands of elements, binary search makes the difference between ten steps to thousands of steps for linear search. Apart from the efficiency of an algorithm, there is also another component that saves time and money: circuits. Seven decades ago, computers consisted of moving parts, such as vacuum tubes, to calculate mathematical functions. It all changed once transistors were used to compute. Unlike physical components that turn on and off, transistors are small, efficient, and do not generate as much heat. Compared to the 1980’s, a problem that required months to solve is now solvable in minutes. This revolutionary discovery sparked the birth of the Digital Age. This is an improvement, but is there an even faster method of computing? With  the help of physicist and their knowledge of Quantum Mechanics, computers can work at unbelievable speeds using Quantum Computing.

In Quantum Computing (closely linked to quantum mechanics), quantum bits (or ‘qubits’) can simultaneously hold values of 1, 0, or both, rather than being set to 1 or 0 as traditional electronic bits are. This way, one qubits can hold the same information as 3 bits. As good as it sounds, quantum computing is still in its infancy since Quantum Computers are large machines that are somewhat unreliable and not yet very powerful. Regardless of the current struggles for these computers, large technology companies, such as Google and Nasa, are experimenting and building the first quantum computers. For example, Google strives for the future of computing and proclaims that their “D-Wave 2X quantum computing machine has been figuring out algorithms at 100,000,000 times the speed that a traditional computer chip can”. Although the product is not available to the public, such efforts are a great step forward for the future of computing.

So, if Quantum Computers are still in their infancy, then why should we care so much about them? In the best scenario, they have the potential to blow right through obstacles that limit the power of classical computers, solving problems in seconds that would take a classical computer the entire life of the Universe just to attempt to solve, like encryption, optimization, and other similar tasks. They are powerful, but things can go wrong if they are used for unethical reason such as online theft and security breaching. In the Digital Age, it is crucial to promote the application of Quantum Computers along with their ethical implications. Without the proper education, Quantum Computing can be a step forward for scientific research or a step backwards for the world economy.

Merge vs. Quicksort (Blog)

In class today, we covered the current Complexity and Computability for Computers.These concepts are essential to Computer Science because the process of writing algorithms is not limited to writing correct syntax. In fact, that is the first step for programmers. Once the programmer understands the syntax for a language, he or she must then research how much money and time an algorithm requires because every additional bit costs a lot for storage. These questions are not covered in introductory programming, but they make the difference between writing a program to count apples to finding the fastest route between points. Although Graph Theory solves this problem, there is plenty of real life applications, from walking between classes in college to how Google Maps gives you the fastest route to your destination. So, how is one algorithm better than the other? Well, one algorithm is considered better if it takes less steps to complete.

In the context of our class, we covered two sorting algorithms: Insertion and Merge. Insertion takes n^2 number of steps to complete while Merge takes n*log2n steps to complete, n being the size of the list. Through these examples, it is clear that Merge sorting is better than Insertion. However, is it the best? Well, not really. At the end of the day though, whatever the best sorting algorithm really is depends on the input (and who you ask). There is an algorithm known as Quicksort which can take less steps than Merge steps. The time complexity of Quicksort is O(n log n) in the best case, O(n log n) in the average case, and O(n^2) in the worst case. Let’s discover how they compare:

Like Merge sort, quick sort works like a recursive procedure (a function that calls itself). The key to understanding this algorithm is to think of it as a pivot. Without going into too much detail, this is how it works: the goal is to rearrange the array such that all all elements less than the pivot are to its left, and all elements greater than the pivot are to its right. Sounds simple, but how to do it will take me pages. Regardless, the important distinction is storage. Why quicksort is better than mergesort ? Quick sort is an in-place sorting algorithm. In-place sorting means no additional storage space is needed to perform sorting. Merge sort requires a temporary array to merge the sorted arrays and hence it is not in-place giving Quick sort the advantage of space. Like I mentioned before, more storage equals more money. So, in terms of price and speed, Quicksort outperforms Merge Sort.

That was a lot of information, so what’s the importance? Well, the problem lies when programmers that are only taught syntax never consider storage cost and processing power. Unless we do something about it, potentially billions of dollars are at stake for storing the large quantities of information from the Digital Age. To further the conservation, here are some additional questions to build upon: can we build faster and cheaper sorting algorithms? If so, how? Is there ethical implications of storing and sorting so much information at a faster rate? How can we assure that all programmers understand the implications of writing code?

Did spiders create the World Wide Web?

At the end of Monday’s discussion, the whole class discussed the answers for some of the questions on the board. Out of these questions, I faintly remember one that asked if the American Indian traditions created the idea of hypertext. Since I did not read the article to its full extent, I am rather intrigued to ask a bigger question at arose from the previous one: is anything uniquely created?

I am not asking if today’s innovations are unique, rather I want to investigate if every single idea that we can come up with uses previous knowledge. I cannot speak much in regards of the reading, so I will instead use an example I brought up in class: did the spider create the idea of the world wide web? Thanks to the collective effort from the class to answer this question, we came to a conclusion that it is not the spider itself that created the idea; instead, it is the interpretation of such an idea to solve a problem that defines whether an idea creates another one. In other words, the world wide web does not look anything like a spider web, but they are similar in the sense that the connections between the web are similar the solution to connect all computers. Therefore, spiders did not create the world wide web. Rather, if it wasn’t for how spider webs are connected, the idea of the internet would not have been possible.

In a way, no idea is unique; instead, it is a combination of previous knowledge that allow for further innovation to flourish. 

Depression Quest

Before clicking continue on the story, I had a couple misconceptions of what the purpose of this website was. In our society, depression is a difficult topic to cover since advocates of mental health need to cover how serious the topic is without reflecting it in a negative light or else no one will seek help. In the other hand, if depression therapy is presented to students in a funny and encouraging tone, then the students will lack the motivation to participate in something that may not actually help them. However, depression quest is the perfect middle-ground to explain how depression works through an interactive story line while still reflecting upon the seriousness of mental health. Although I did not personally deal with depression, I was there at every step of the process for someone who did. During that stage of my life, I never clearly understood how depression impacted every aspect of a person’s life, so I stood as an outsider offering help without realizing what mental health consists of. Since depression quest altered the amount of decisions to take depending on our mental state, I learned how small daily decisions limit the brain’s ability to make seemingly rational decisions. Looking at the overall purpose of depression quest, I realized that it is not about teaching the user about depression; instead, it stood as the perfect interactive platform to dig inside the mind of someone who has depression and the variety wide variety of ways of dealing with it.