Skip to main content

Posts

CST 325 - Module 1

It's the beginning of a new class! In this CST 325, I am going to be learning all about graphics programming and understand the concepts behind generating computer graphics. This first week involved a lot of trigonometry, geometry, and vector math review. The majority of graphics programming relies on math from these fields, especially vectors, so it's important to understand it even before diving into the basics. I hadn't done trigonometry or vector math in a while so I had some difficulty doing the review assignments at first, but watching 3Blue1Brown's videos on vector math helped me out a lot.  The second part of this module involved writing a simple 3D vector (Vector3) and sphere API, and performing ray-sphere intersection calculations. I was able to understand and implement Vector3 quickly, but the ray-sphere intersection program/API took me a little longer than I expected because I wasn't familiar yet with some of the built in functions and how to impleme...

CST 311 - Final Week

In the final week of class, we finished learning about network security and its associated protocols, specifically on securing existing protocols, like TCP, with services such as SSL and TLS.  SSL and TLS are considered "in between" the application layer and network layer - while they work by modifying data and technical details associated with TCP and enhancing its security, programmers can include it in their applications by using its API. The majority of secure Internet transactions are conducted using TLS or SSL (TLS more often these days as SSL is now considered deprecated).  We also learned about securing wireless connections through protocols such as WPA2, as well as how virtual private networks (VPNs) can be used by internal networks or end users to secure connections to and from the rest of the Internet. 

CST 311 - Week 7

In this penultimate week of class, I learned about how the link layer functions and its governing protocols, how networks discover MAC addresses and map them to respective IP addresses, and finally the topic of cryptography as it relates to communications over networks.  The link layer's main protocol is ARP, or the Address Resolution Protocol. Its main function is to resolve IP addresses associated with specific MAC addresses on networks, and relies on switches, routers, or a lack of either, to achieve this goal. Similar to other request-response protocols, if a source system decides to send a message to a destination it must know the appropriate information, or if not discover and save such information for future reference. This is also one of the main purposes of ARP: it caches MAC addresses attached to IP addresses in lookup tables, which are discovered through broadcast and reply messages.  Cryptographic hash functions are a topic that I have always wanted to study...

CST 311 - Week 5

This week, we learned all about how IP addresses work, subnet masking, address assignment by hand and through DHCP, and how datagram forwarding works. I found this week tough because the textbook only gave high level overviews of each concept, and figuring out how to do the homework problems required a lot of thinking and searching around for information. I enjoy flipping bits and masking them, but I need a lot more studying and practice when it comes to allocating IP addresses through different subnets by hand. I found some cheat sheets that were somewhat useful, but I still want to understand the concept thoroughly. Assigning IP addresses by hand and datagram forwarding reminds me of the first time I learned about bitwise operations (e.g. left shift, right shift, AND, XOR, two's complement) and how confusing they were to me at first but eventually became second nature. Now, I am determined on mastering the ins and outs of IP addresses!

CST 331 - Week 4

Over this past weekend and part of this week, I took the midterm exam and finished a short lab on looking at UDP segments in Wireshark, along with reading a section on programming a simple TCP/UDP client-server demonstration program in Python. The midterm was not different overall, but I lost a lot of points on the bottleneck/client-server throughput and bandwidth questions, so I need to spend more time studying those concepts again before the final exam. There were also a few questions I missed about certain details I overlooked in the book or video lectures. I believe my grade reflects accurately the amount of time I spent preparing for the exam, but it would've been much higher had I gotten the block of questions about client-server bandwidth correct. The lab was short in comparison to previous weeks, which is understandable since preparing for the midterm was our class's priority this week. Learning about the technical details of UDP such as header length and bit fields...

CST 311 - Week 3

It has been quite a busy week! This week, we learned more about transport layer services, including both TCP and UDP, and in this week's lab I looked at the details of DNS queries and they are sent and received across networks. DNS and I have had a love-hate relationship in the past, as when I was a sophomore at UCSB I had a lot of trouble that year getting my desktop connected properly to the school's network because my motherboard at the time had some wonky Ethernet adapter settings that caused every DNS query to be rejected by my school's servers. It took an entire day of troubleshooting and some help from my close friends who were computer engineering undergrads at the time, and if it weren't for them I would've had to buy a WiFi adapter or resort to using my spare laptop all year.  What strikes me the most about DNS queries is how they are normally sent over UDP instead of TCP, only switching to TCP once packet sizes reach over a certain byte limit (I think...

CST 311 - Week 2

This week, we learned more about Internet protocols, basics about HTTP/TCP requests, what different messages are composed of and how application level protocols work to deliver content over networks. I found the article about P2P clients and streaming websites the most interesting because I watch streaming video and listen to streaming music all the time, yet never looked into the technical details about how it worked. This week's lab also involved using Wireshark to sniff and read HTTP response and request packets. I use Wireshark sometimes at work so I was already familiar with looking at the structure of these HTTP headers, but in the past I have never needed to look at anything more than IP addresses so learning about the types of data and response codes returned in these header files was useful.