Aug 30, 2020

27 min read

CS 371p Fall 2020: Amogh Dambal

Hi! Welcome to my blog for the Fall 2020 semester of CS371p (Object Oriented Programming) at The University of Texas at Austin. I’ll be writing weekly posts based on prompts given by Dr. Glenn Downing, who’s teaching this course. Stay tuned!

CS 371p Fall 2020 — Final Entry

  • test first, test during, test after, test, test, test
  • when designing algorithms, demand the weakest iterators (e.g. bidirectional vs. random access)
  • when designing containers, provide the strongest iterators (e.g. random access vs bidirectional)
  • build adapters on top of containers, iterators, and functions
  • always look for reuse and symmetry in your code
  • collaboration is essential to the quality of your code and to your well-being in producing it
  • refactor, refactor, refactor
  • make your code beautiful

How well do you think the course conveyed those (above) takeaways?

I think the course conveyed the takeaways very well. Though the material was incredibly rich and varied, partly due to the fact that a lot of time was spent understanding the why and the how of particular implementations along with learning parts of C++, I think that Dr. Downing did a good job of making sure that we came away with the critical takeaways after each lecture about every concept.

Were there any other particular takeaways for you?

One thing I also took away from this class was the importance of using particular tools to help in developing, designing, and writing code. For example, in this course we were required to use tools like Valgrind, astyle, cppcheck, Doxygen, and GitLab CI builds for the projects. This requirement helped me learn about the importance of using tools like these to help improve the quality of my code quickly, and I know that I will be working on adding these tools into my personal projects and projects for other courses in the future.

How did you feel about two-stage quizzes and tests?

I enjoyed the two-stage quizzes and exams, because it gave everyone an opportunity to be sure they were familiar with the material before moving on (for the quizzes). The exams being two-stage were also helpful, because it fostered a type of collaborative environment where you could have your own solution to the problem checked by the members of your group, and catch things on the second iteration of the problem that you may have missed on the first. However, I preferred the first two-stage exam, where we worked on the same problems twice (once individually, once with a group) rather than the second two-stage exam, where the problems were different.

How did you feel about cold calling?

I didn’t mind the cold-calling, because I thought that the class and Dr. Downing created an environment where it was less important that you knew the right answer when you were called on and more important that you were able to follow the logic of what was being explained for that particular topic, which was helpful and made the overall experience less stressful.

How did you feel about office hours?

I think office hours was very helpful. Though I only went once or twice, Dr. Downing and the TAs were incredibly helpful and understanding, and answered my questions and helped me understand the material thoroughly.

How did you feel about lab sessions?

I didn’t get a chance to attend lab sessions for this course this semester.

Give me your suggestions for improving the course.

In general, I enjoyed the course. The only suggestions I would have for improving the course would be to better balance the time spent on particular topics, as I can remember feeling like we covered some topics (like lambdas, for example) very briefly while spending lots of time on others. However, I think a lot of this was due to the adjustment to a fully online course and so I think the balance and the topics should be better balanced when the course is (hopefully soon!) taught in-person again.

Blog Post 13 — November 22, 2020

What did you do this past week?

This past week, I finished the Life project, as well as made significant progress on the end-of-semester research projects for my other classes. I was also able to spend some time working on OS Project 4: Filesystem, which is the final challenging project for that class.

What’s in your way?

I think the biggest thing in my way is the large quantity of writing that I have to do in order to complete the essays and research projects, all of which are due on November 24. The other biggest thing in my way is working on the filesystems project before Thanksgiving. Because of how challenging my group anticipates the project to be, we want to be able to do the bulk of the work before the OS professors and TAs go on break, so we spend less time stuck on something.

What will you do next week?

Next week, I will finalize, polish, and submit all the projects for all of my various classes — Life, and the research projects. I will also work on continuing to apply to various internships and try my best to finish the Life project.

If you read it, what did you think of What Happens to Us Does Not Happen to Most of You?

I thought it was very eye-opening to read first-hand accounts of the discrimination and harassment that women in the tech industry and STEM continue to face. I also think that it is important to understand how two individuals’ experience in tech is, unfortunately, very qualitatively different due to gender-based harassment.

What was your experience of inheritance? (this question will vary, week to week)

I think inheritance was very interesting, albeit complicated at times, as a way of solving particularly thorny design problems. However, it was also refreshing to learn about inheritance and the under-the-hood implementations of derived and base classes so we can use them more correctly.

What made you happy this week?

This week, I got to spend more time cooking and experimenting with new recipes — I was able to revisit my egg curry recipe!

What’s your pick-of-the-week or tip-of-the-week?

One pick-of-the-week I found was this podcast episode about concepts and algorithm intuition in C++.

Blog Post 12 — November 15, 2020

What did you do this past week?

This past week, I managed to complete my OS virtual memory project with my group. Given the amount of time and effort that the OS projects seem to be requiring, it felt like I didn’t have much time to work on anything else during the course of the week, though I managed to write the build configuration for the Life project as well.

What’s in your way?

Currently, I have to figure out how to balance working on multiple large-scale projects for multiple classes. Not only is the Life project on my plate, but my group and I also have to start and finish OS Project 4 dealing with implementing a file system. I also have research projects and research papers for other classes that serve as the final assignment for those classes, so I have to figure out how to divide up my time and work on things that require vastly different approaches to project-work.

What will you do next week?

Next week, I aim to finish the Life project and make significant headway on the various research projects for my non-CS classes. I also hope that I can make good progress on the OS filesystem project so I will have a minimal amount of work to do for the week of Thanksgiving, which would hopefully allow for a much-needed break.

If you read it, what did you think of The New Methodology?

I thought it was interesting! It seemed to explain many software engineering concepts (albeit at a high level), which is content that I typically don’t get much exposure to. I also found it interesting I could see how various flaws in programming methodologies manifested in almost all of the code I have written up to this point.

What was your experience of containers, container adapters, and Life? (this question will vary, week to week)

I appreciated the complexity that went into the design of the C++ STL. Understanding the implementations of various containers and why certain design choices were made meant that I could use STL containers more powerfully in my own code, because I knew how they worked instead of just knowing that calling a certain method produced a certain behavior.

What made you happy this week?

Joking about race conditions is definitely a coping mechanism for how many I’ve had to deal with in OS
Who knew software development could be so simple?

What’s your pick-of-the-week or tip-of-the-week?

My pick of the week would be this blog that I found. The article in particular talks about C++ lambdas and their utility in function extraction, but there’s some pretty cool articles here that I was able to read.

Blog Post 11 — November 8, 2020

What did you do this past week?

This past week, I managed to finish up the Darwin project and take my OS midterm (both on Wednesday), which was good because it allowed me to relax as the week came to a close. I was able to finally optimize Darwin enough to get me to pass the HackerRank tests and cleanup the code a little bit and make sure to get a passing CI build, among the other project requirements.

What’s in your way?

Right now, the biggest thing in my way is trying to figure out how to handle recruiting along with everything else — I feel like I haven’t done nearly enough, but I also know that I am essentially way too late for most positions. To make things more fun, almost none of the companies that I have applied to have responded back, so I need to really focus and figure out what I am doing wrong and keep going in order to reach my goals.

What will you do next week?

Next week, I plan to finish our group’s OS Project 3. I have heard that it is the most challenging project, and that definitely matches with what I have experienced as I work to implement it with my group. I hope that through a combination of long hours and many, many office hours visits I can get it done in time; that would leave only one more OS project to go!

If you read it, what did you think of The Dependency Inversion Principle?

I enjoyed reading The Dependency Inversion Principle. It highlighted a lot of the problems that I see in my own code, both that I write currently and my old code. There were many times that I was reading the paper and thought about how certain problems mentioned by the paper were evident in my code, but at the time were just things that “felt off” to me. One thing that was confusing about the paper was its lack of concrete examples; I felt like I might need to reread it in order to fully understand how to avoid introducing (incorrect) dependencies in my code.

What was your experience of continuing to implement std::vector, move semantics, and allocators again? (this question will vary, week to week)

I enjoyed learning more about the implementation of std::vector. In particular, I enjoyed seeing how the C++ STL works hard to have a rich interface, in order to enable developers — even those working in embedded environments or environments vastly removed from what the creators of the STL envisioned — to use the STL in order to increase efficiency and make their lives easier while programming. I also enjoyed learning about how move semantics could be useful in certain contexts.

What made you happy this week?

I managed to upgrade my chai recipe!

What’s your pick-of-the-week or tip-of-the-week?

I saw this talk that covers nearly 105 C++ STL algorithms in an hour, and I highly recommend it — it’s a great way to become really familiar with almost all of the C++ STL algorithms very quickly, and it is a very good talk and is very well delivered.

Programming is really an artform.

I also saw this on Reddit — it’s a C++ class definition that also doubles as its UML diagram, which is absolutely amazing.

Blog Post 9 — October 25, 2020

What did you do this past week?

Not much. I made a submission for OS Project 2 and submitted the Allocator project.

What’s in your way?

Currently I just have to figure out how to approach bigger/more difficult projects without stressing. Even though I try to do a little bit of work every day, it’s difficult to stay focused on each day’s work and very easy to get stressed or overwhelmed by the sheer amount of work and the difficulty of the material involved, especially moving into OS Projects 3 and 4 and OOP projects 4 & 5.

What will you do next week?

Next week I will most likely work on Darwin and OS Project 3 as much as I can, since I don’t think I have much else to do in my other classes. I will also try to get more done for my student org.

If you read it, what did you think of Ethical CS?

Unfortunately, I didn’t read Ethical CS as of the time of writing this blog post.

What was your experience of lambdas, initializations, std::initializer_list, and std::vector? (this question will vary, week to week)

I had encountered lambdas in previous C++ code but had never understood them properly enough to use them. Now, however, I see that they can be an incredibly powerful tool and they are a part of what allows C++ to truly implement the functional programming paradigm. I didn’t understand std::initializer_list<> as well, so I will have to go back and review that.

What made you happy this week?

Not anything at all.

What’s your pick-of-the-week or tip-of-the-week?

My pick-of-the-week is a programming language I found called Emojicode which I thought was amazing. Additionally, if anyone uses Atom as an IDE/editor there is a Comic Sans font package that looks fantastic. I also found a couple of very interesting pieces of code, including this usage of Unicode support in GCC 10.2 and above:

It’s almost like a work of art. Almost.

and this method of compiler intimidation:

I think the compiler is less threatened by my code and more afraid of the work it has to do to look at my code.

Also, The Queen’s Gambit is a really good show on Netflix!

Blog Post 8 — October 18, 2020

What did you do this past week?

This past week, I took almost all of my midterms, including Test 1A and 1B for this course. Additionally, I also had to figure out a way to devise a solution for the Allocator project that passed all of the HackerRank tests, which I was fortunately able to do. I also had the opportunity to have an interview for a summer internship, and so I virtually went to that as well. Hopefully, all of the “submissions” — for the exams, interviews, and projects — that I made last week work out in a relatively positive way.

What’s in your way?

Currently, I have to figure out how to balance the increasing workload in both my OS course and this one. I know that the OS projects from Project 2 onwards will continue to increase in difficulty, and I need to stay on top of things if I don’t want to fall critically behind. I also need to start dedicating more time towards my student org, as I have not been able to devote the amount of time to that as I would have liked to.

What will you do next week?

Next week, I will submit the Allocator project after writing unit tests and ensuring the GitLab CI pipelines and other checks have been completed. Additionally, I will try to finish our OS Project 2 before the deadline and continue working on things for my student org(s).

If you read it, what did you think of The Liskov Substitution Principle?

Unfortunately, I didn’t get a chance to read the Liskov Substitution Principle, so I have no opinion on it.

What was your experience of Test #1? (this question will vary, week to week)

My experience of Test #1 was relatively positive, overall. I genuinely enjoyed most of the questions, as they were interesting problems to think about conceptually. However, I do regret that my brain completely blanked on Question 1 on Test 1A; the solution was material that I knew but wasn’t able to put into practice. However, I liked discussing various possible solutions and details with my group, as we uncovered interesting side effects and possibilities in each others’ solutions.

What made you happy this week?

Since I had a relatively low workload for the upcoming week, I was able to visit home, which was nice.

What’s your pick-of-the-week or tip-of-the-week?

My pick-of-the-week is Catch, which is an open-source header-only C++ library that can be used for unit testing. I have used it for previous open-source/personal projects, and I think it could be interesting to see how it compares to the Google Test framework we use in class/on the projects.

Blog Post 7 — October 11, 2020

What did you do this past week?

This past week, I mostly focused on thinking about solutions for my OS project as well as the Allocator project. I was unable to make much progress on either, which felt frustrating at times, because it was a week in which I didn’t have any midterms or exams to consider. Because of this, I felt like I could have made better use of my time to come up with a working solution to either the Allocator project or the Pintos Project 2 — User Programs assignment. However, I did manage to write a skeleton implementation of Allocator that managed to pass a few tests, though there are still several bugs in the solution that I need to fix before running it through HackerRank.

What’s in your way?

I have a few exams upcoming, and trying to balance studying for all of those midterms, writing essays for my other classes, studying for the upcoming midterm in CS 371P, working on the OS projects, and all non-academic content (such as applying for internships, organizations, etc.) will be incredibly challenging. Furthermore, these exams appear to be more vague than in other classes, so it is more difficult to get a good grasp of what or how to study for them.

What will you do next week?

I think next week I will finalize my preparations for all of my midterms first. I think that I need to be able to perform well on all of those exams, as they are worth relatively large amounts for their respective classes. In addition, I also need to come up with a solution to the Allocator project that passes all 5 HackerRank tests. I think that managing to get the correctness points for that will be a significant milestone; I can write tests and make the code bulletproof after securing a correct outcome.

If you read it, what did you think of The Open-Closed Principle?

Unfortunately, I didn’t read the paper before I wrote this blog, so I don’t have the ability to comment or give an opinion on it.

What was your experience of iterator concepts, std::array, and std::vector? (this question will vary, week to week)

I think that my primary reaction to iterator concepts was that they were very useful to the user of a particular container but are very difficult to implement in practice. However, I think that a well designed and well programmed user defined type will, if necessary, provide its users with a bulletproof iterator and relevant access and update functions so that the user-defined type can function in a nearly identical manner to built-in types.

What made you happy this week?

What’s your pick-of-the-week or tip-of-the-week?

I found a great blog by Adrian Colyer entitled the morning paper which, if I am not mistaken, works to give easily digestible summaries of papers in computer science research. In particular, I found this summary regarding static analysis in Java enterprise code an interesting read.

Blog Post 6 — October 4, 2020

What did you do this past week?

I mostly tried to get everything done without falling apart. I had an OS project, the Voting project, an OS exam, and an essay all due within a 48 hour span from Wednesday to Thursday. It was incredibly stressful to try to manage to get everything done, but I was able to finish the projects ahead of time so as to be able to study for the exam (and hopefully get a good score) and submit the essay without going crazy. After the insanity of those few days, I think I needed to recharge and avoid doing too much work for this upcoming weekend in order to jump right back into things with the second OS project and the Allocator project.

What’s in your way?

I think it’s hard to end one sprint and start another. I have to recapture the work ethic of the past 2 weeks and be dedicated to working hard on all of the 10 things I have to do every day, no matter what. That kind of drive will make the weeks when everything is due much more bearable. Furthermore, I think that I need to be able to keep track of all of my classes, not just my CS ones. I have fallen a bit behind in the other 2 classes that I am taking this semester and so I need to use my weekend free time to catch up.

What will you do next week?

Next week, I think I will try to implement a basic solution to the Allocator problem and get started on OS Project 2. I also need to start preparing for the upcoming exams not only in CS371P, but also in my other classes, so I need to make sure that I am keeping up with all of the assigned readings and material. Falling behind is incredibly tricky when it is in a class you have to prioritize lower because of OS.

If you read it, what did you think of Why Is Silicon Valley So Awful to Women?

I thought it was an excellent piece that truly exposed some uncomfortable truths about the tech industry and about myself and other people that want to go into the field. I think that I need to constantly evaluate my own biases and conceptions of people in the field and work to make sure that I am creating an inclusive and welcoming environment in every way.

What was your experience of arrays, equal(), and iterators? (this question will vary, week to week)

I enjoyed learning about the various, more modern methods to using arrays and the ways their pointer types are utilized in C++. I also think it is important for me to become comfortable with iterators and other such features of the language, because they are very useful and prevalent in advanced C++ codebases that I know I want to tackle in the future.

What made you happy this week?

Finishing everything was a big relief.

What’s your pick-of-the-week or tip-of-the-week?

My pick this week is this talk I found on Reddit about C++ for functional programmers (?). I think it can be an interesting watch about some of the nuances of the language and about different programming paradigms.

Blog Post 5 — September 27, 2020

What did you do this past week?

This past week, I spent most of my time working on the two projects — one for OS and the other being Voting. The OS project sucked up most of my time, as it was incredibly time consuming to come up with solid, robust design philosophies to handle threads and scheduling. For this class, I think that the majority of my time was spent in trying to recover from OS, so it was difficult to move beyond the simple, naive voting solution. I managed to come up with a solution that passed the first HackerRank tests, but the code is incredibly buggy for the other 2 tests, as it fails asserts and most likely has numerous bugs in derived from both faulty data structures and algorithms.

What’s in your way?

Currently, I think that the biggest thing that is in my way is my schedule. This week, in addition to having to submit Project 2 on the 30th, I have an OS exam on the same day. After that, on the 1st of October — the next day — I have to submit the OS thread/scheduling project, with the design document for that project due on the day after that. In addition, I have at least one essay due on Thursday whose topic I do not know. I think it will be very challenging to balance all of these various responsibilities.

What will you do next week?

I think that next week I will have to clean up the final 2 test case failures for my OS project, fix the bugs in the Voting project to get it to pass all of the HackerRank tests, and study for the exam(s) and essays that I have to do.

What was your experience of values, addresses, references and consts? (this question will vary, week to week)

I enjoyed learning about the various ways in which references and addresses are related. In particular, I think that I have often confused references and pointers, and the ways each of them interact with addresses and values. Learning about values/addresses and how references interact was a good review of the fundamentals of C++. Additionally, I think that it was very important for me to learn about const-correctness. I have often heard that there are many important use cases where a programmer must protect and flag data as const to make the program more correct, and I think that learning how read-only vs read/write pointers and references work in C++ was helpful in allowing me to use const better in my code.

What made you happy this week?

Nothing, unfortunately. I am still waiting for something to pop up that will allow me to answer this question differently.

What’s your pick-of-the-week or tip-of-the-week?

This video lecture from CPPCon 20 delivered by Bjarne Stroustrup on the “Beauty of Primitive C++” was pretty interesting to me.

Blog Post 4 — September 20, 2020

What did you do this past week?

This past week, I focused on getting started on Project 2 — Voting for this class and on optimizing/completing Project 0 for my Operating Systems class. Along with my other coursework, these activities took up most, if not all, of my time. When thinking about Project 2, I built a simplistic system that is able to process I/O and I also generated all the build/config files needed for GitLab CI. Thus, I think that I have setup a strong shell from which I can work on finishing the implementation of my solution and then optimizing it.

What’s in your way?

I think that as the workload in all of my classes begins to increase dramatically, time management and the sheer volume of work will get in my way. As the OS projects get harder, as midterms approach, and as daily homework assignments turn into essays for other classes, I have to figure out how not to finish one thing at the expense of everything else.

What will you do next week?

Next week, I will hopefully make strong headway on both my OS project and the Voting project. Ideally, I will hope to have finished both projects by this time next week. For Voting, I plan on implementing my solution and spending the least amount of time possible optimizing. Additionally, I think that I will not take as much time figuring out submission particulars for this project, as I have gotten good practice from submitting Collatz.

What was your experience of exceptions, voting, and strcmp? (this question will vary, week to week)

I think it was incredibly interesting to learn about exceptions, particularly the reasons why they are needed and the small, yet important quirks in their behavior that manifest themselves in programs. Additionally, it was good practice to develop robust routines to process I/O that was not as simplistic as in Collatz. Finally, strcmp and the exercises we did for that routine were a good refresher of lower level programming with char* types, null termination, and pointer arithmetic.

What made you happy this week?

As usual, absolutely nothing, but I don’t really care anymore.

What’s your pick-of-the-week or tip-of-the-week?

This week, my pick-of-the-week is this very interesting blog post about the problems of generating random numbers using the C++ STL.

Blog Post 3 — September 13, 2020

What did you do this past week?

This week, I spent a good amount of time working on projects for other courses, especially OS, and working on recruitment events for Natural Sciences Council, my organization. These projects took up a significant amount of my time this week, as I was kept busy with meetings and trying to debug solutions to the problems faced in OS. With respect to this class, I spent most of my time working on optimizing the Collatz project. Though I was able to come up with a simple brute force solution relatively easily, implementing the lazy cache optimization took up a large chunk of time. I had to spend time making decisions on whether to use the STL or not in a cache implementation. After deciding to use the STL, I had to decide on whether to use std::vector or std::array. Making these decisions and then implementing, testing, and verifying them took up a huge chunk of my time this week.

What’s in your way?

I think procrastination is getting in my way. I was unable to start working on the Collatz project until very late this week, and so I had to spend many late nights in frustration as I tried without avail to pass the third HackerRank test. Though I was able to eventually optimize my caching and my overall solution to come up with a passing solution early on Sunday, I created a lot of additional stress by not balancing my time and working on the Collatz project in small, bite sized chunks over the course of the week. Though I have other responsibilities, I have to learn to balance them with all of my courses.

What will you do next week?

I will probably work more for my organization as we have interviews coming up to end our application cycle. In addition, I will spend time reviewing the material for my OS course and for this course, as I have finished the projects for both of those courses. I will also try to incorporate better study habits — I had started this project at the very beginning of the semester, and I think I have to remind myself to get in that groove.

What was your experience of Collatz, the starter code, the makefile, its optimizations, and exceptions? (this question will vary, week to week)

My experience with Collatz was positive. It was initially daunting to work through the Makefile, studying all of the various tools that we were “arm-twisted” into using. However, those tools became incredibly valuable at various points in the project. For example, Valgrind allowed me to catch multiple out-of-bounds errors in caching. The tools used to format and generate documentation, such as astyle and Doxygen, were also incredibly helpful in making sure the end result was as clean and well-documented as possible.

What made you happy this week?

Nothing, unfortunately. But I have stopped expecting or trying to be happy; I think as long as I can get things submitted in some form I can try to avoid absolute misery.

What’s your pick-of-the-week or tip-of-the-week?

My pick for this week is cppcast, a podcast “for C++ developers by C++ developers.” Usually, the two hosts will have a guest on the show that is some kind of expert in some topic relating to C++, and I find the discussions and tips generated by the podcast to be relatively helpful. I recommend checking it out when you can!

Blog Post 2 — September 6, 2020

What did you do this past week?

This past week, I mostly worked on getting myself reoriented with the rigors of a course schedule. Though I am not taking a particularly large number of hours, I had let myself become far too accustomed to the incredibly unstructured nature of the summer. As the semester continues and classes begin to find their rhythm and fall into a routine, I tried to setup various productivity tools and establish a level of familiarity with them that I hope will help increase my academic engagement and productivity.

What’s in your way?

I am! I often find that my thought processes tend to be incredibly contradictory and discombobulated at times, and that has often had drastic impacts on both my own state-of-mind and performance overall. I think I have to learn how to both get out of my own way by avoiding over-analysis and overthinking of many situations while also making sure I try to stay on top of things as much as possible.

What will you do next week?

I think that I will focus more on doing more for each of my obligations each day. I think that I tend to follow tangled threads wherever they may go, regardless of their relevance or importance to the task at hand. While this can often be enriching, I think it gets in the way of being a better student and person in general. I want to make small commits to all of my projects (both literally, with software development, and metaphorically, in other aspects) so that I can hopefully feel more fulfilled at the end of each day.

What was your experience of assertions, Google Test, and gcov? (this question will vary, week to week)

I learned that assertions are not good for unit testing, nor for user errors. Instead, they ought to be used to check things like pre and post-conditions internal to your code. I have also found them to be useful sanity checks, to make sure that certain invariants in your algorithm hold true throughout the execution of your program. Google Test, the unit testing framework introduced this week, seems to be a very useful tool in developing good practices and habits involving thoroughly testing small portions of your code. The gcov coverage tool (and coverage tools in general) was a new concept. However, I found it fascinating to track what percentage of your code is actually executing on each run of the program, and I think using that data can be invaluable in determining dead/inefficient code in my algorithms.

How are you doing and holding up? What’s been most helpful for you in terms of support at this time?

To be honest, I am not! But I think that is okay, because I have found that if I simply distract myself with enough things to do and projects to complete, that I tend not to dwell too much on how I am doing or holding up. Though this isn’t healthy, the notion of throwing myself into work of all kinds has been somewhat helpful in supporting me throughout the start of the semester.

What made you happy this week?

Nothing! But again, I think this okay, since it just means I have to simply deal with it and hope that next week will be better.

What’s your pick-of-the-week or tip-of-the-week?

I found a very interesting set of YouTube videos from CppCon, the annual conference for C++ developers. I found a couple of incredibly interesting talks about the C++ language and about how to write better C++ code that I thought was incredibly fascinating to watch! Two of the talks that I found most interesting include “There Are No Zero-Cost Abstractions” by Chandler Carruth, a Google engineer who works on LLDM and C++ compilers, and “C++ Code Smells”, by Jason Turner, a C++ guru (? I am not sure what his exact title is) of sorts whose most notable accomplishments include developing ChaiScript, an embedding scripting language targeting C++, and being a Microsoft MVP from 2015–2019.

Blog Post 1 — August 30, 2020

This is our first post, and it’s to function as an “About Me!” where I give a little bit of information about who I am and why I am “here”, so to speak.

I mostly grew up in Austin, TX, where I moved when I was about 8 years old. I then attended Westwood High School in Austin for my first 2 high school years, and then attended TAMS (Texas Academy of Math and Science) for my junior and senior years. Though I dabbled in several extracurriculars both at Westwood and at TAMS, I found that I enjoyed Speech and Debate the best because of the people I met while competing and the various ways the activity shaped my mindset throughout high school.

I came to UT because it was a big school, and so I believed it was a place filled with such a rich variety of people that would always keep me on my toes, never lulled to complacency or boredom. I decided to major in computer science because I’ve liked solving problems for as long as I can remember, and the fulfillment and satisfaction I get from fixing even the smallest bug is what hooked me on to the field. I took this class not only because I had heard rave reviews about the instructors and the content, but also because I wanted to dive into OOP at a level beyond what I had been exposed to in every introductory Java/C++ course I had previously taken. I’ve never been able to quantify expectations very well, but I think I want to come out of this course being able to better understand how to solve certain types of problems in software development and why those methods work the way they do. I know most of the basics of C++ and have taken a couple of courses where C++ was the primary language, but I am very excited to dive into other aspects of the language with which I am unfamiliar and learn how to apply and use more modern C++.

Before taking this course, I had heard that Dr. Downing used a method of lecturing that involves cold-calling students in order to then have a guided discussion with them about certain pieces of code. Though I was initially unsure about how this would work in practice, I now find it incredibly unique and effective in engaging my attention with the course topics, especially because the class environment is very comfortable and I don’t feel the pressure to be correct all the time.

My pick-of-the-week is this post I found on Reddit, where someone has done an incredibly detailed analysis of the simplest possible C++ program. I thought it was very interesting to skim the article to see how much work happens with compilation and linking to get from a source .cpp file to an executable.