top of page

Computer Programming

 

Over the past years, I have completed many computer programming projects for the CSC 180 and CSC 190 computer science courses. These projects were implemented in two different programming languages; Python for CSC 180 and C for CSC 190. As my knowledge of programming increased, the level of difficulty and complexity of these projects also grew, thus different design strategies had to be employed when undertaking these projects.

 

One of the unique projects of CSC 180 was writing a Python program to create a model of molecular biology. The aim of the project was to familiarize the students with classes and object-oriented programming which is a key feature of the Python language. Some functions of the program included mutating DNA sequences, transcribing DNA into RNA, and finding loci. Since many parts of the program were dependant on other parts, it was essential to read the entire assignment and planning out a strategy for implementing the program before starting to write code. Thus for the first time in programming, I had to brainstorm possible ways of designing functions on a piece of paper and try to think of test cases where my implementation would fail.

 

In CSC 190, each of the projects dealt with different data structures that would be used to model a certain aspect of life. For the first assignment, my partner and I had to use singly and doubly-linked lists to model a simulation of the TTC subway. Since this course introduced us to pointers and memory allocation within the C language, we had to ensure that our code for this assignment (and for the following assignments as well) had no memory leaks. Learning to use pointers correctly required frequent diagram drawing of our linked lists on paper, which then helped us identify where our code created segmentation faults.

 

For our next assignment, we used binary trees to simulate computer processes and viruses. This complexity of this assignment was due to not only the nature of binary trees but also the fact that we were not allowed to use any for loops or while loops. The reason for not using loops was to familiarize students with using recursion. Again, visualizing and drawing out binary trees played a key role in designing our code, which in the end turned out to be more than 1000 lines long.

 

The last assignment of CSC 190 involved using the graph data structures to model how sexually transmitted infections propagate through populations. The main challenge of this assignment was choosing the right implementation to define a graph structure that would yield efficient code. With our initial implementation, we encountered problems as we progressed into the assignment, and hence we needed to start from the very beginning with a different structure definition that would  not run into these problems and that would increase the efficiency of the program.

 

Overall, these assignments have taught me how real world phenomena can be modeled by computer programs, and that every phenomena is best modeled by a particular data structure. Understanding the problem and reading all constraints and criteria before seeking a solution to the problem, and performing effective testing of any possible solution is needed to solve the problem effectively, and forms a key component of my engineering design process.

bottom of page