CS373 Fall 2019 Journal
These were the weekly blog posts required for CS373 - Software Engineering. We had given prompts and I hated doing them at the time - but it’s fun to reflect on now that it’s over :))
Entry 1: Sep 1, 2019
Hello! This is my first weekly blog post for a class that I am taking this semester at the University of Texas (UT), CS373: Software Engineering. In the class, we will spend the semester in groups, creating a website from scratch, as well as learning about software engineering techniques and best practices.
This has been my most anticipated class at UT for the past few years, as I have always really enjoyed web development, and many of my friends who have taken the class heavily recommended it to me as one of the most useful, true-to-life classes that are offered in the computer science department.
The professor for this course (Professor Downing), provided a list of questions for this blog post, so I will answer a few of them in the hopes that it will provide some background about myself!
Where did I grow up?
I grew up in Midlothian, Texas, a small town south of Dallas. However, I went to a STEM high school in Waxahachie, Texas, a nearby town. Because I spent my high school years in Waxahachie, I feel more attachment to that city as I was way more active in the community there, through volunteering, attending community events, and spending time with friends downtown.
Some of my extracurricular activities in high school involved Technology Student Association (I competed in Tech Bowl, Webmaster, and Structural Engineering), Science Club, and Yearbook. Surprisingly, my school had no sports (it was definitely a place for nerds like me), so I made up for that by playing ultimate and running for fun in my free time.
Why are you majoring in CS?
Back in middle school, I watched a lot of tech review videos on YouTube, channels like MKBHD, TechnoBuffalo, and TLDToday. These channels got me really interested in technology, and I decided in seventh grade that I wanted to become a software engineer.
However, I did not yet know how to code, so my freshman year of high school, I taught myself basic web development through an online course, and really enjoyed it. From then on I mainly learned web development by starting new projects and trying out all sorts of technologies and frameworks. Because of this prior experience, I had no reservations when it came time to choosing a college major.
How much Javascript/Python/Web programming do you already know?
I have been doing web development for around 6 years at this point, and have picked up quite a lot. I started by learning basic HTML and CSS, and from there eventually started moving into more dynamic web tools. I learned WordPress development with PHP and did small projects with React, Maven and Vue frameworks. In addition, this past summer, I worked at Google using Angular to do front-end work.
Thank you for reading!! I am looking forward to a great semester in class.
Entry 2: Sep 8, 2019
Hey! Week 2 of classes has just wrapped up, and you know what that means another blog post! From here on out, Professor Downing will give us 5 questions each week that we need to write about (the fourth one will change each week, and the others will stay the same).
What did you do this past week?
This past week, I created a calendar for myself to manage all of my classes, assignments, and tests for this summer. As my classes are starting to ramp up and I received all of my syllabuses, I find it helpful to spend the beginning of the semester filling out my calendar with due dates, so I always know what is coming up. Also, I went to NYC this past Friday for a software engineering internship interview, which is my first onsite interview of this year.
What’s in your way?
Currently, I am still adjusting to life back at school. This past summer I was a software engineering intern, and working in the industry is very different from college life. Getting readjusted to homework, deadlines and no free meals has taken more time than I expected.
What will you do next week?
Next week I will finish up the Collatz project, which is the first assignment in CS 373 and involves writing some code, but mostly deals with writing unit tests, acceptance tests, and other software engineering paradigms. Outside of this course, I have another onsite interview scheduled, this time in Seattle, and a few other phone interviews scheduled as well. Because of this, I will definitely have a few late nights this week, as I need to finish Collatz, as well as some assignments for other classes as well.
What was your experience in learning about assertions and going over the Collatz project?
In regards to assertions, I had never really used assertions before in my code, but Professor Downing has convinced me that I should. From now on, I am planning on using assertions when developing larger scall software projects, so that I can validate both pre and postconditions. In regards to the Collatz assignment, I am excited to get started, because although I have dealt with unit testing and acceptance testing before, I have never built a testing structure like that from scratch.
What’s your pick-of-the-week or tip-of-the-week?
My pick of the week is Awwwards, a website that showcases beautifully designed websites. I first came across this website in high school, when I was just learning how to design websites for the first time. Since then, I have received countless inspirations from the websites highlighted there and always go there for new web design ideas.
Entry 3: Sep 15, 2019
On to week 3 of classes! All of my classes are almost done ramping up and CS 373 — Software engineering is no exception. We are starting to get into the main content of the course, which I am super psyched for. Without further ado, let’s get into this weeks blog questions!
What did you do this past week?
This past week I tried to finish multiple assignments due and flew out to Seattle, Washington for an internship interview. As you can imagine, balancing both of these tasks was hard, and resulted in my doing a lot of homework in the airport and hotel room so that I could finish on time. Outside of travel, I went to classes this week, attended the UT programming competition, and had three other internship phone interviews.
What’s in your way?
Recruiting for internships next summer has been taking up a lot of time ever since school started. Between coding challenges, phone interviews, and onsite interviews, I spend a considerable chunk of my week prepping and doing technical interviews. This definitely cuts into my time to do homework and study for exams and has also caused me to miss class a few times. While I am glad that I have been able to interview at a multitude of companies, I am looking forward to soon wrapping up the internship hunt so that I can fully focus on my studies for the semester.
What will you do next week?
Next week, I have yet another onsite scheduled, this time in Washington D.C., as well as a few more phone interviews. Outside of recruiting, out first assignment is due for CS 373! This assignment consists of a simple programming problem, (the Collatz conjecture), but the real focus is on the development workflow, which involves writing unit tests, acceptance tests, using GitLab, and more software engineering concepts. Having been busy this past week, I still have a lot to do to finish this assignment before the due date, and will get right to it directly after finishing this blog post.
What was your experience in learning about unit tests, coverage, exceptions, and types?
Learning about coverage was very interesting to me, as I had heard the term before, but did not know what it meant until now. Other than that, unit testing, exceptions, and types were all constructs that I had learned in our data structures class and had further studied on my own. However, I learned those concepts using Java, so it was interesting to see how to apply them in Python, but the concepts themselves were nothing groundbreaking.
What’s your pick-of-the-week or tip-of-the-week?
Tip-of-the-week: Apply as early as you can to companies!! A lot of underclassmen (freshman me included) get caught up with starting the new semester, and everything that comes with it, and do not even think about applying to internships until later in the year. Also, some people believe that they are not qualified, and want to wait until they have more experience to apply. While this can definitely be true in some cases, I have found that it is usually more beneficial to apply as early as possible, as it will greatly increase your chance of scoring an interview with the company that you want.
Entry 4: Sep 22, 2019
It is Sunday, so you know what that means! Time for another weekly Software Engineering blog post.
What did you do this past week?
This past week I went to Washington D.C. for an interview for a summer internship, which took much of my time and attention for the end of the week. Because of this, I ended up missing the fall computer science career fair at the University of Texas at Austin, and although I was a bit sad I could not go, I am already in the process of interviewing with all of the companies that I am interested in, so I feel that I am not missing much. In addition, this past week I found out that I made the Texas Rock Climbing team, and attended the first team practice, as well as a kickoff to the climbing season.
In terms of this class, I finished the first project, Collatz, and met with my team for the first time, with which I will spend the rest of the semester working with. I definitely put off finishing the first assignment for longer than I should have and plan to start much earlier on future assignments.
What’s in your way?
After making the climbing team, I realized that it would be a substantial commitment to the rest of the semester. After tryouts and the first team practice, I was wiped out and spent a few hours napping instead of doing my homework (which is why this blog post is later than my others). Learning to balance my school responsibilities with a sports team will definitely be a skill that I will need to hone, in order to ensure that I maximize my output for both.
What will you do next week?
This week I (currently) have no onsite interviews scheduled! I do have some coming up (in Chicago and San Francisco), but I purposefully left this week empty, as all the travel has caught up to me and left me feeling a bit sick. Because of this, I should be able to focus more on my schoolwork and get a good start on project 2 for software engineering.
What was your experience in learning about operators and AWS?
AWS was really interesting to learn about, as I have used Google Cloud Platform and Firebase this past summer at my internship, but never AWS. I could definitely see the similarities between the different technologies, as well as major differences. I know that AWS is a larger industry standard, and I am very interested in learning more about it and beginning to implement many of its features in our product. I have wanted to learn it for a while now but have never had a project that required extended use of it.
What’s your pick-of-the-week or tip-of-the-week?
I really, really enjoy https://jsfiddle.net for quick web development explorations and experiments. You can quickly set up lots of boilerplate with minimal effort, and create simple web development demos to share with teammates as proof of concepts, or to demonstrate a point. I have used it a lot when I want to create a simple calculator for example, or see if a certain animation I have in mind is feasible.
Entry 5: Sep 29, 2019
Hello everyone! Another week has gone by in the semester, and with the end of the week comes another blog post.
What did you do this past week?
This week I did not have any onsite interviews for the first time in three weeks (although I did have a phone interview) and took the opportunity to relax and spend most of my time at home working on schoolwork.
I finished a really interesting assignment for my Data Mining class, which was to implement a decision tree. While the project was not too difficult code-wise, the concepts behind it were all new to me, and really fun to explore. In software engineering, our team met and decided on a topic (national parks), and got started creating our website. I made the basic react structure, creating a web app that had components for the home and about page and installed all of the right dependencies and frameworks.
What’s in your way?
As I mentioned in past weeks, recruiting season is in full swing, and I have had to dedicate a significant amount of time each week to coding challenges, phone interviews, and onsite interviews. I am nearing the end of my internship hunt, however, and should be done with recruiting in the next few weeks (fingers crossed!).
What will you do next week?
I have an onsite interview coming up in Chicago, which I am excited for as I have never visited the city before. However, this will take up much of my Thursday and Friday so I need to ensure that I finish the majority of my work before then.
On the schoolwork side of things, I have two tests coming up (in algorithms and a journalism class), as well as a due date for software engineering project two. Furthermore, I need to finish a study abroad application that I have been putting off for too long, and all in all, have a lot of work I need to get done.
What was your experience in learning about for in, iterators, and reduce()?
reduce() and similar functions were concepts I first learned this summer while using TypeScript and Angular, and I was able to get familiar with the way they work, which is very similar to how they work in Python. For, in and iterators work different than I expected, however, and I still find myself using Java syntax when trying to write a for loop in Python. The Python seems to be way more flexible though and allows programmers to do things with iterators and for loops that are much more complicated, if not impossible in Java.
What’s your pick-of-the-week or tip-of-the-week?
If you are trying to create a new React application, I heavily recommend using Create React App) to quickly get started. It handles a lot of boilerplate code and allows you to start building almost immediately.
Entry 6: Oct 6, 2019
Hey! Week 6 of class just finished, and with it, the first part of the semester-long project for Software Engineering. Without further delay, let’s unpack this week!
What did you do this past week?
This past week I went to Chicago for my fourth onsite interview of this semester. My Thursday class was canceled, so I flew out early and got to spend a lot of time in Chicago, and really enjoyed the city, I can definitely see myself going there for a full-time job.
However, a lot of my time in Chicago (as well as on the plane, in the airport, and the rest of the week), was spent working on the second assignment for Software engineering, which was to set up our development workflow and static pages for the website that we will be developing throughout the semester. My responsibilities included getting the repository and issues set up, setting up the react project, setting up the domain and hosting, and creating many of the pages for the website. Having worked with React before, I was able to get that part of the project done fairly quickly, but setting up the web hosting took some time to get used to, as I have never used Google Cloud Platform before to host a website.
I underestimated how much team coordination would be necessary for this project, which led to confusion, and a lot of last-minute development, hence why I had to do a lot of it while I was traveling. For the next project, we will definitely try to organize tasks better, and make sure that each team member has a knowledge of what they are going to work on, and when.
What’s in your way?
Although I have been doing web development for a while now I have never extensively used a RESTful API or created one myself, so everything relating to that is brand new to me. While I am tempted to simply not interact with the API for the rest of the project, and focus on the frontend, I know this a great chance to learn more about using RESTful API’s and I want to learn more about them. However, I want to read more literature about them and learn more about PostMan, which is what our team is using to develop our API.
What will you do next week?
Again, I have another onsite interview, this time in San Francisco, so I will spend next weekend mainly doing that. Other than that, I will spend time getting started on the next phase of the software engineering project, making sure that we have everything set up to quickly get ramped up to ensure we are not struggling to finish at the last second. In addition, I have another project due in my data mining class, so I will need to balance the work between the two classes.
What was your experience in learning about the different Python containers, iteration, comprehensions, and map
?
These concepts were already somewhat familiar to me, as similar constructs exist in other languages I have used, such as JavaScript and Java. However, I mainly learned about them through the class notes, as on Monday, I had realized that my test had been moved from Wednesday to Monday in my algorithms class, and skipped Software Engineering to cram for that. Furthermore, I had to miss class on Friday as I was gone for my interview. Thankfully, I was able to learn about how these tools work in Python, and grasp the reasoning behind the way they work, as it was not apparent to me at first.
What’s your pick-of-the-week or tip-of-the-week?
As different groups have started on their websites, I have noticed that a lot of people have begun to understand the somewhat counterintuitive world of CSS. With that, one of the most common problems is centering elements, both vertically and horizontally. A few years ago, I found the site How to Center in CSS, which automatically generates code to center your element, given the context of your HTML structure. It has saved me from multiple headaches, and I still use it regularly.
Entry 7: Oct 13, 2019
Welcome to another edition of my weekly blog posts!
What did you do this past week?
This week I went to San Francisco for an onsite interview! I was in the bay area for the summer, so I had been in the city before, but it was still fun to walk around the city in my free time, and eat at some nice restaurants. Besides that, our Software Engineering team met up to get started with phase 2 of the project, which involves getting the API set up, and using it on the website. We are trying to be more organized with this phase of the project and spent more time getting our issues created and organizing who would work on what aspects.
What’s in your way?
In addition to the phase 2 deadline coming up for software engineering, we also have a test in the class on Thursday. The test consists of a Hackerrank, which we must work on in Python to pass the given tests. Even though I have done dozens of Hackerrank assessments, I have never taken a test in college using it, and that is leaving me with some apprehension as to how I should approach studying for the exam. Because of this, I want to spend as much time as I can studying for the test, which means that I won’t have as much time to work on the project this week.
What will you do next week?
Like I stated above, we have an exam in software engineering next Thursday, so the majority of my time will likely be spent on that. However, I have a software engineering project, as well as other class projects and homework to work on, so I need to make sure that I am balancing my time and priorities appropriately. As the test is worth a large percentage of my grade, I will spend the most amount of time studying for that. Furthermore, I have 3 final round interviews this week, with one of them being an onsite in Houston (which I have interestingly never been to before, despite living my whole life in Texas).
What was your experience of CATME’s peer review?
I wish that CATME allowed team members to provide more specific feedback, in the form of open-ended questions, as that was the part of the peer review that I found the most helpful. However, the way that the peer review system works right now was able to give me some insights into how I could be a better team member, and what things I can improve upon going into the next phase of the project.
What was your experience of peer-instruction quizzes?
I was not the biggest fan of peer-instruction quizzes, as I felt like they took up even more time at the beginning of the class period, leaving less time for the actual content of the lecture. So far, I have found the quizzes to be relatively straight forward, with any ambiguity being easily explained by Professor Downing. Because of this, I found that it felt redundant and unnecessary to do the peer-instruction quizzes. However, I want to note that I am not a fan of daily quizzes in general, which definitely biases’ my answer to this question.
What’s your pick-of-the-week or tip-of-the-week?
My tip of the week is to talk with other people about job rejections that you have gotten. I have found that for the most part, people tend to highlight their successes, sharing their internship and job offers on LinkedIn and Facebook, which can be discouraging if you have not gotten an offer yet. However, as I have talked to more and more people, I have found that I am definitely not the only one who has been rejected from dozens of companies, and being able to talk about the frustration with other people has given me more confidence in my abilities, and kept me from getting discouraged during this busy recruiting season.
Entry 8: Oct 20, 2019
This week was a busy one, let’s get right into the blog post.
What did you do this past week?
This past week I flew to Houston for an onsite interview, but the end is near! This past week I also received 3 offers for summer internships, each of which I would be happy to take. This means that I only have one more week left of interviews before I make my decision.
This was also a busy week for Software Engineering, as test #1 was this week, so I spent time preparing for it and took the test on Tuesday. Furthermore, phase #2 of the project is due next Tuesday, so I had to balance spending time studying and working on the project.
What’s in your way?
Both phase #2 of the project and my Data Mining exam are on Tuesday, so I am trying not to dedicate too much time to one or the other. Furthermore, much of my work on phase #2 is dependent on my team member’s work, and with two days left to finish this phase, I am starting to worry that we will not be finished on time. Although I have been able to make progress, we will need to eventually spend lots of time working on the website together, putting all of the pieces together.
What will you do next week?
Like I stated in the previous question, I will be studying for my Data Mining exam, and finishing up phase #2 of the Software Engineering project. I have been mainly handling the frontend for the website, which means that for this phase I will need to consume the API that my teammates are building, and write tests for the frontend using Mocha and Selenium. In addition, I will be wrapping up my recruiting for the year and make a decision on where I will intern next summer.
What was your experience of the peer-instruction exam?
The Exam was harder than I anticipated, and I heavily disliked the test format. The test was on Hackerrank, with five questions, and to get full credit on the test you had to pass all of the test cases. However, you only had 45 minutes to answer all of the questions, and after those 45 minutes, you could either take your grade or take the test again, this time collaborating with those around you. I found this test format awful, as I believe it would have been extremely more beneficial to simply give the whole hour and a half to take the exam. Also, the fact that we were surprised by this test format made the whole experience much more stressful, and I hope this kind of surprise does not repeat itself for the rest of the semester.
What’s your pick-of-the-week or tip-of-the-week?
My pick of the week is this website, which has handpicked font pairings using Google Fonts. Google Fonts is an easy way to integrate nice fonts into your website, but it is often hard for me to pick fonts that go well together. However, lately, I have been using this site to make decisions relating to fonts, as the selections are made by designers who knew what they were doing.
Entry 9: Oct 27, 2019
Finally! A week where I mainly just did school stuff.
What did you do this past week?
This past week I finally did not have any onsite interviews, so I was able to spend the majority of my time on schoolwork. Specifically, I spent a lot of time studying for my Data Mining exam on Tuesday and working on phase two for my Software Engineering project. Since I had already finished most of my major responsibilities for the project, I did not have too much left to do before the due date.
What’s in your way?
Our team did not finish the API for phase #2 of the project, and we need to finish that before we can really start development for the next phase of the project. So far, I have mainly done frontend development, but this past week, I tried to learn a good amount of backend skills so that our team can catch up and get our website to the state that it is supposed to be in. I have also been reaching out to other teams who used Google Cloud Platform in their project to see if they have any practical tips so that we can get our API up and running.
What will you do next week?
Next week I will continue working on our Software Engineering project so that we can try to eliminate the technical debt left behind from the previous phase and get a head start on the next phase of development. In addition, I will need to start studying for my Algorithms exam next week, as well as work on the various assignments that I have going on. In addition, I recently accepted an undergrad proctor position for an elements of computer science course, which I need to catch up on so that I can effectively grade assignments and hold office hours.
What was your experience of the IDB2 project?
Like I mentioned before, I have mainly been working on the frontend of the website, which so far has involved working with React and HTML, SCSS and JavaScript in general. My portion of the project has gone pretty smoothly, as I started working on phase 2 early, and had plenty of time to finish my work as do some non-essential work, such as styling all of the pages and adding graphics and a favicon to the website. However, not all of my team members had started as early as I did, which led to a lot of stress on the day the project was due, as we did not have time to integrate the API. This showed me that this project is definitely doable, we just have to ensure that we are planning ahead as a team so that everyone finishes their work on time.
What’s your pick-of-the-week or tip-of-the-week?
My pick-of-the-week is Coolors, which is a website that makes it really easy to create a color palette for a website. I have been using it for years to get color palette inspirations for projects. Once I find a color palette that I like, I use SCSS to set those colors to variables and use those variables throughout the project. By doing it this way, I can later change the colors if I choose by only editing the values of those variables, rather than having to hunt through all of my code to see where I used those colors.
Entry 10: Nov 3, 2019
This week has very much been the calm before the storm.
What did you do this past week?
This past week I got sick, which was probably due to the fact that I have not been getting as much rest as I should be (in no small part due to this class). However, as I still had a lot of responsibilities to take care of, I had to press on full speed ahead this week. I worked on some assignments and started my undergrad teaching assistant job.
On a happier note, I was lucky enough to receive 6 internship offers for next summer, so I have been spending a large amount of time talking to friends and recruiters to decide which internship would be the best for me and weighing the pros and cons.
What’s in your way?
The API for our website is still not complete, and I am waiting for progress by other team members to be able to get our website serving dynamic data. This has been in our way for over two weeks now and has been a huge blocker for our ability to progress in the software engineering project. Specifically, I need to able to access the API when working on the frontend, as currently, I am just loading in static data, and there is nothing dynamic about the content that we are currently serving on the website.
What will you do next week?
This week is going to be a doozy. I have an algorithms and journalism exam on Monday, an assignment to grade, and the next phase for the software engineering project due on Thursday. Add in the fact that I am still a bit under the weather, and overall just physically exhausted, and I know that this week will be very trying for me. I am really depending on my teammates to be able to help tie everything together for our project so that we will be able to finish everything on time.
What was your experience of SQL?
I have used basic SQL before, as I originally began developing websites using PHP and MySQL. However, I never had a solid SQL foundation, so it has been great to be able to learn it the ‘proper’ way. SQL has a very logical way of expressing things, which makes it easier to grasp than many other CS tools and technologies.
What’s your pick-of-the-week or tip-of-the-week?
My tip of the week is to go to hackathons! I attended HackTX this weekend (briefly), and was reminded by how much I enjoy attending hackathons. The opportunity to learn new technologies and make cool projects is not a chance that I get too frequently, so I try to take advantage of it whenever possible. Furthermore, I have made many friends at hackathons, as well as teammates that I really enjoy working with.
Entry 11: Nov 10, 2019
This week was pretty brutal.
What did you do this past week?
This past week was hard. I had two exams on Monday, an assignment to grade, and a software engineering project due on Thursday. I spent a lot of time on each of these things, and it paid off in the end, as I was happy with my performance on all of them. Particularly on the software engineering project, our team did a much better job of communicating with one another, and we were able to finish pretty much everything that we had set out to do at the beginning of the phase. Because of this, I ended this week tired but satisfied.
In addition, I spent a significant amount of time talking to engineers and previous interns for the companies that I received internship offers from so that I could make the best decision I could for where I would intern next summer.
I also applied for the Pyongyang Blockchain and Cryptocurrency Conference, a conference in North Korea dedicated to blockchain and cryptocurrency technologies.
What’s in your way?
Currently, I do not have much in my way. I just finished my last wave of tests, recruiting, and multiple projects. For seemingly the first time in the semester, my schedule is relatively clear, so I will take the opportunity to catch up with homework and start early on the next phase of the software engineering project. In addition, I will also catch up on sleep and try to enjoy my time in college.
What will you do next week?
Next week I have an assignment due in data mining, but not much else that is due in my classes. I will likely spend some time with my team starting on the next project phase for software engineering, and practicing for a climbing competition that is coming up in two weeks.
What was your experience of refactoring?
I did not find learning about refactoring valuable so far. Most of the topics that we discussed have so far relating to refactoring have been pretty basic ideas that we were taught back in intro to programming, and implementing them the way we have been doing in class, the benefits of the refactored code are not always very apparent.
What’s your pick-of-the-week or tip-of-the-week?
My tip of the week is to use SCSS/SASS https://sass-lang.com/. SCSS/SASS is a CSS preprocessor that adds a ton of functionality that makes it so much easier to write CSS. For example, you can have nested styles, variables, and mixins (similar to functions). One of the things I use it the most for is setting a few color variables, and using those throughout my project. If I ever want to change the color of my site later, all I have to do is edit those variables, and nothing else.
Entry 12: Nov. 17, 2019
This week gave me a good chance to relax from all of the tests and assignments of previous weeks.
What did you do this past week?
This past week I worked on a data mining project and a different data mining assignment but did not do much else school wise. I went to a volunteer event with Texas Rock Climbing and got the chance to do some climbing at Mckinney Falls state park this weekend.
In addition, I finally decided this week to take an offer for a summer internship from Two Sigma! I was lucky enough to have offers from different companies, but that made making a decision much harder. The deciding factor for me ended up being the logistics of the internship. I am going to be studying abroad next semester, and my semester abroad will be ending a bit later than the semester at UT, which made it hard for me to be able to complete a 12-week internship, which is the most common internship length. However, the internship at Two Sigma is 10 weeks and is in New York City, both of which I was looking for in a summer internship. Overall, I am feeling pretty good about my choice and am relieved to finally be done with recruiting.
What’s in your way?
As I mentioned in my previous post, I am planning on studying abroad in Stockholm, Sweden next semester. While I am really looking forward to the experience, it is quite a stressful process to get everything in order to live abroad next semester. I have to get a residence permit, secure housing, book a flight, and a host of other things that I have not even begun to think about. All of this is quite stress-inducing, and I am definitely worried about missing some vital step that prevents me from being able to study abroad.
What will you do next week?
Next week I will spend a significant amount of time working on my software engineering project by refactoring code and beginning to design the visualizations that we need for our site. In addition, I will be working on a project for my data mining class, and prepare for my first rock climbing competition, which I have coming up next weekend.
What was your experience of inheritance
I did not learn much from the lectures on inheritance. I was a teaching assistant last year for the data structures class at UT, and through that, I got very familiar with the concept of inheritance in Java. Thus, most of the information presented in the lecture was a reminder to me, rather than new, foreign concepts.
What’s your pick-of-the-week or tip-of-the-week?
My pick of the week is a really neat website called Codrops. They often use cutting edge web technologies in really interesting ways. The demos that they have on their websites include really interesting layouts, transitions, and animations. I have drawn inspiration from many of their articles in the past, and find myself looking through the website almost every time that I am starting a new web development project.
Entry 13: Nov 23, 2019
Similar to last week, this week was pretty laid back, but I am ready for a short break, especially if that break involves eating large amounts of food.
What did you do this past week?
Not too much. I worked more on my data mining and software engineering projects but did not have a terrible amount of work to do on either. I spent quite a bit of time working for my teaching assistant position, as this week involved a pretty challenging homework assignment, so I made time to hold extra office hours on the day that it was due.
Also, this weekend I got the chance to compete in my first rock climbing competition at a local gym, called Texas Flexes. The event was a lot of fun, and I finished squarely in the middle of the pack, which was as good as I had hoped for at my first competition.
What’s in your way?
Currently, school is in the way of me going home for Thanksgiving break. This year, Thanksgiving is on the latest possible day, which has made the semester seem extra long as a consequence. All jokes aside though, I do not have much in my way currently, and I just need to work on all of my various tasks so that I can take some time to visit with family when I go home over the break. The only thing that I have going against me is the constant stress of planning my study abroad experience for next semester. I still need to register for a visa, buy a plane ticket, and manage a dozen other tiny details before I can go to Sweden. Luckily, my fellow student, climber, and Swedish enthusiast, Chris Nunez, has his life more put together than I do, and we are helping each other make sure that this study abroad can become a reality.
What will you do next week?
Next week (and for the rest of the weekend), I will be working on both my data mining and software engineering final project, ensuring that we meet all of the criteria and polish it up as much as possible. In the case of our software engineering project, the main thing that I have to finish is the data visualizations on the site. Other than that, there are some bug fixes and minor improvements that I want to make to the site to make it the best it can be before the semester is over.
However, after Tuesday, my main concern will be trying to eat as many calories as I can before heading back to Austin.
What was your experience of singletons and reflection?
Similar to my opinion on the other refactoring lectures, I did not find learning about singletons and reflections particularly useful. I was glad that I finally knew what a singleton was but other than that, the design pattern did not seem to improve the code in most of the places that we used it. Indeed, when I researched more about the topic, I found that the singleton design pattern has many critics and that those criticisms are not unfounded.
For instance, “Critics consider the singleton to be an anti-pattern in that it is frequently used in scenarios where it is not beneficial, introduces unnecessary restrictions in situations where a sole instance of a class is not required and introduces global state into an application”. This description seems to fit most of the instances where we used the singleton pattern, and I do not think that it will be something I use very frequently, if at all in my future projects.
What’s your pick-of-the-week or tip-of-the-week?
My tip of the week is to look at the code repositories of other people in the software engineering class! Usually looking at other people’s code is discouraged, but in this class, everyone’s code is public, and that fact should be taken advantage of. Many times, I have found myself unsure of how to implement a particular feature on our site, and I have often solved it by looking at the repositories of current and past students of the class.
Entry 15 - Final Entry: Dec 7, 2019
We have finally finished the semester for Software Engineering, and boy do I have some thoughts.
What did you like the least about the class?
The lectures for this class were not helpful to me in the slightest. First of all, the lectures were not in any way related to the project, which I knew coming into the class, but that did not make it any less annoying. This made me disinterested in attending lectures, and less excited for the class overall.
The class schedule was basically as follows. The first half of the semester was a sort of ‘Intro to Python’, then we covered SQL for two weeks, and then afterward did refactoring and basic software patterns in Java.
Because the project was React-based, it would have made so much more sense to do the first half of the class in JavaScript and not Python. In addition, the python we did cover was very basic and concerned a lot of edge cases, and did not have much application to actual software engineering principles. We also did not cover SQL long enough to learn anything in-depth, and the Java we covered was mostly reviewing material from the data structures class taught by Mike Scott.
I would have much preferred if the class was taught in JavaScript, and covered topics such as SQL and asynchronous calls more in-depth, as it would help a lot with the project, as well as be more useful in terms of software engineering.
What did you like the most about the class?
I liked the premise of the project and our final product turned out pretty good (https://www.putitinpark.me/).
What’s the most significant thing you learned?
I already had experience with web development, but the project definitely made me more confident in React, and javascript. I also learned D3.js, which was a javascript library that I have wanted to learn for years.
How many hours a week did you spend coding/debugging/testing for this class?
While we were working on the project, probably around 15–20 per week, as there was a lot of stuff that needed to be done, and I had to end up doing more tasks then I should have to get everything done.
How many hours a week did you spend reading/studying for this class?
Probably around 30 minutes a week. Sometimes I would skip going to lecture (for the reasons listed above), and I would consult the notes that professor Downing posted to make sure that I did not miss anything essential. Other than that, I would spend a few days studying before each exam.
How many lines of code do you think you wrote?
A lot, although lines of code is not an important metric at all. If I had to guess, probably somewhere around 4,321, as I did all of the frontend and a good chunk of the API for our project.
What required tool did you not know and now find very useful?
D3.js. It was a technology that I have seen many websites used, and I have always been fascinated by data visualizations. This project gave me the excuse that I needed to learn it in-depth, and now I am pretty confident in my ability to make data visualizations using that tool.
What’s the most useful Web dev tool that your group used that was not required?
SCSS. Most groups used regular CSS (or no styles at all), but using SCSS (a superset of CSS), made a lot of things much easier. SCSS supports nested selectors, variables, and mixins that help you write styles much quicker than traditional CSS. Also, it is really easy to set up for React projects.
How did you feel about the cold calling, in the end?
It was terrible. I personally did not mind being cold-called, but the majority of the time that a person was cold-called, they were either absent, missed the last lecture, or did not understand the question that was being asked. This resulted in a lot of wasted time, and the student floundering, trying to answer a question that they were not prepared for. It interrupted the flow of the class and led to a lot of awkward pauses.
Furthermore, because of cold-calling, professor Downing was less likely to notice when students had their hands raised to ask a question, and also left less time for people to ask more questions overall. This led to the class being less engaged then it would have been if there was no cold calling.
If you could change one thing about the course, what would it be?
Teach the beginning of the course (relating to map, filter, reduce, iterators, classes, etc.) in JavaScript rather than Python. This would be better for many reasons.
- Many other courses already require students to learn Python, not many require JavaScript.
- Students will be using JavaScript in their projects all semester.
- JavaScript is becoming more prevalent in software engineering jobs.
- You can cover asynchronous behavior easier in JavaScript.
Overall, this course has been a stressful experience. I enjoyed working on the project that we had throughout the whole semester, and I learned a lot from that, but I did not learn much outside of the project that I will be able to use in my career as a software engineer.