Tuesday, December 13, 2022

CST338 Weeks 5, 6, 7, and 8

We focused on Android development in the last half of the course. This included our second major project, in which we were tasked with creating an Android app that functions similarly to a digital storefront. Major parts of the design included account creation and login, managing a database, facilitating the purchase of faux products, and creating an admin-only panel with management functionality. Android Studio was used to create the app, along with standard Android APIs, such as Android Room.

Look back at the Histogram assignment and think about how you would approach it now.  Think about all the things we have covered and how far you have progressed.

While we have learned many additional programming techniques since we completed the Histogram assignment, I think my original approach still stands. Given the algorithmic nature problem, many of the recently-learned concepts such as abstraction, encapsulation, polymorphism, and inheritance do not necessarily apply. I have to note though, that compared to our Android project, the Histogram assignment now seems simple.

Highlight at least two victories.

I would say the work I submitted for the Histogram assignment and the Library project are two victories. For the Histogram assignment, I went through many iterations of the code to get it near optimal. For the Library project, while the main code was not as optimal as the Histogram assignment, I wrote an extensive series of tests that ensured every aspect of the program worked as expected. This included a system that captured what would normally be printed to System.out, and verified that the produced strings were as expected.

Tuesday, November 22, 2022

CST338 Week 4

What was most the challenging part of Library.java?

Most of the function implementations were easy enough. The main difficulty I experienced with the assignment was the management of the Code enums / return types. Since there are so many error codes it was difficult to keep track of which ones I was supposed to be handling or returning.

What was the easiest?

I found the file parsing to be easy, as it stems from simple String manipulation. Actually transforming that data into the correct state proved more difficult.

What are you most proud of?

I wrote LibraryTest.java, and managed to test the actual output of the program, (what normally goes to System.out). It took some time to figure out how to capture output using custom stream objects.

What topics from the class were the most useful for this assignment?

String manipulation was vital to this assignment. Without a good foundation in that concept, the parsing of the file would have been difficult. To the same effect, experience using the Scanner class was integral to consuming the file.

What changes / improvements would/did you make to the assignment?

Passing Code enums to the various functions is an odd pattern. Personally, I would have the functions either throw an exception, or return a Code enum to the caller, and let the caller decide what the error message should be.

If you could give yourself some advice about the assignment, what would it be?

Write the tests early, after you finish each function. The tests seem monolithic if you write them after the entire Library class has been written, (and potentially in a broken fashion). The work is much more manageable if you incrementally write them; you might even catch bugs early on.

Tuesday, November 15, 2022

CST338 Weeks 1, 2, and 3

CST 338 is “Software Design.” In week one we mainly got all the required software installed, and completed some Java exercises through CodingBat as a refresher on Java. We also learned about JUnit, how to write tests, and how to apply that knowledge to our assignments.

In week two we had some heavier coding assignments. Histogram was our first large assignment; it involved reading a file consisting of single-character lines, and generating a histogram of the contents. Concepts important to week two included array manipulation, Scanner, StringBuilder, sorting, etc.

In week three we started working with inheritance and polymorphism. Assignments such as Trooper and Inheritance Vacuum had us creating abstract classes to share common structure and implementations with subclasses. We also had our midterm this week, which tested us on most of the concepts we have learned thus far in the class.

Markov

Who did you work with?

I worked with Christopher McMichael - Team 1, Bitwise.

What was your strategy for solving the Markov assignment?

My strategy with the Markov assignment was to first skeleton-out all the classes / fields / methods of the assignment, then start implementing them one-by-one. I tested the various functions immediately after I wrote them to make sure they were working reasonably well. After everything was written and passing unit tests, I went through the program and made sure I did not make any glaring efficiency errors. After that I tried to find ways to break the program, and I ended up fixing a few deficiencies.

What was THEIR strategy for solving the Markov assignment

Chris’s strategy was to brute force the problem at first. He wrote all the code at once, ran it against the test files, then went back and fixed any problems. To aid in debugging, Chris used print statements to track down where the errors were occurring.

How would you change your strategy having worked on the assignment?

I do not think I need to change my strategy. To my current knowledge I completed the assignment to specifications, and did so in a timely manner.

According to your classmate(s): how well does your code follow the Google Java Style Guide

My code slightly differs from the Google Java Style Guide. For example, I put else statements on their own line, and indent using four spaces instead of two. Other than those points, my style largely matches Google’s recommendations.

Did you know you can automate applying some of the style guide rules

I did! In fact, I have IntelliJ auto-formatting to my preferred style already. If this becomes an issue I can submit assignments formatted in Google’s style, though I believe my style is readable and clean enough to be sufficient.

Saturday, October 22, 2022

CST300 Module 8 (Final)

Part 1: Review Other Teams' final video projects


Team: MobiusRetrieval

Source – General Population: https://www.youtube.com/watch?v=KqBB-0Y3yYk

Source – Professional Population: https://www.youtube.com/watch?v=geQ1qYcSneI

1. is the topic well covered?

Each video defines key terms, and covers the critical parts of AI. The videos do a good job tailoring their message and terminology to the specific audience.

2. is the presentation clear?

The presentations are clear. Visual aids, pictures, and videos are used to help convey concepts, and do a good job keeping the presentation focused.

3. how is the quality of the research?

While the presentations do not list their sources, they include a lot of interesting and specific information, which shows that a significant amount of research went into creating the videos.

4. how is the quality of the video production?

The presentations mainly step through slideshows, alternating between speakers. The videos are well edited and do not contain any errors.

5. is the video engaging and interesting?

The videos are extremely engaging. AI is an interesting technology, and the presentation does a good job of providing many real-world examples of what it is discussing.

6. is the team work evident?

Yes, several different team members take turns narrating slides.

7. is the video appropriate to the audience (either general public or technology professionals)

As previously mentioned, the videos tailor themselves to the intended audience. The video targeted towards the general population takes a more simplistic approach to the concept, while the professional video takes a deeper dive into the nuances.

 

Team: Pocket-Sized Solutions

Source – General Population: https://youtu.be/FyOcN1NBX3M

Source – Professional Population: https://www.youtube.com/watch?v=NGJE5dhVjh4

1. is the topic well covered?

Yes, the videos cover many of the aspects of mobile advertising, such as their often fraudulent, and predatory nature.

2. is the presentation clear?

The presentations are clear. While, in my opinion, the “interrupting ads” joke sometimes carries on for too long and ultimately distracts from what the presentation is attempting to convey, overall the videos are well organized and presented.

3. how is the quality of the research?

The videos include which references were used for a particular segment. These references are high quality, and show that a significant amount of research was done to compile the presentations.

4. how is the quality of the video production?

The video production is very high. Speakers take turns narrating over presentations that are highly dynamic, which include video elements, and various parodies of advertisements interrupting the experience.

5. is the video engaging and interesting?

The videos are highly engaging. The topic of mobile advertisements is relevant to practically everyone in the technology space, and the team created videos that keep the viewer interested via dynamic elements.

6. is the team work evident?

Yes. Multiple different speakers narrate over the presentation.

7. is the video appropriate to the audience (either general public or technology professionals)

At first the animation caught me off guard. I think this works well for the general public presentation, though the professional presentation also included a small animated section, which I am not sure is suitable for the intended audience.


Team: Byte Builders

Source – General Population:  https://www.youtube.com/watch?v=tznTlGlg1Cg

Source – Professional Population: https://www.youtube.com/watch?v=YacxzdC0T-4

1. is the topic well covered?

The topic is well covered. Certain key issues like space pollution, download speeds, and region coverage were discussed.

2. is the presentation clear?

Some of the speakers talk a bit fast, which personally made it difficult for me to parse some of what was being conveyed.

3. how is the quality of the research?

There is a lot of good information in the presentations. I particularly enjoyed the fact that the group performed a small study on Reddit, though I am not sure the sample size is large enough to make widespread observations. The presentations did not include references, so it is not possible to directly validate the quality of their sources.

4. how is the quality of the video production?

I would have liked to see some more production on the general population video, as that presentation mainly included shots of the narrators. The professional presentation was much more dynamic, stepping through slides, and video clips.

5. is the video engaging and interesting?

The videos cover an interesting topic. I think the general population video could have had more dynamic elements to keep the viewer engaged, as the professional video did.

6. is the team work evident?

Yes, multiple speakers take turns narrating, and presenting the different slides.

7. is the video appropriate to the audience (either general public or technology professionals)

The general population video might have been too information heavy for the public. I think the professional presentation catered well to the intended audience, mixing presentation with information.


Part 2: Keep Up With Your Learning Journal

Bitwise Final Video Project:

CST 300 emphasized collaboration. The main lesson I will take away from this class is that the software engineering industry is built on top of collaborative projects, and that being able to work in that sort of environment is extremely important. Our team’s collaborative ability faltered a bit throughout the course. I think the most important aspects to improve on is the communication between team members, and the ability to set deadlines, and deliver by those times.

Tuesday, October 18, 2022

CST300 Module 7

Part 1

Our team has collaborated well so far regarding the Final Research Video. Last week in our team meeting, which was facilitated through Discord, we determined the timetable to have the various parts of the project done. First on the agenda was a Google Doc where we compiled research, second was a Google Slide where we made the presentation, and third was a deadline where all team members needed to have their sections recorded. We are currently working on recording the video. The process has been smooth so far, I see no need to change future groupwork based on this project.

Part 2

Ted.com video reflections:

Source: https://www.ted.com/talks/aicha_evans_your_self_driving_robotaxi_is_almost_here

  • An alternative view of the self-driving car revolution is not one where everyone has an individual car, like we do today, but one where a shared pool of vehicles transport people on-demand.
  • Computer vision allows self-driving cars to see and parse the world around it, allowing them to drive and avoid obstacles. However, this computer vision is still far below a human’s capacity to absorb and understand the environment.
  • Radar and Lidar are used to supplement traditional cameras to provide additional information to the computer.
  • The presentation described a self-driving car that can continuously see 360 degrees around itself, and for over 150 meters.
  • There will always be edge-case scenarios that cannot be handled by a self-driving system. Simulations can be used to help train self-driving systems to respond to these edge cases.

Source: https://www.ted.com/talks/john_c_mather_how_the_james_webb_space_telescope_will_unfold_the_universe

  • The James Web Space Telescope is estimated to have a 20-year operational lifespan.
  • To fit inside the rocket, James Web had to be intricately folded. The telescope then had to carefully unfold over two weeks when it reached its destination at L2, which is around two million miles from Earth.
  • The telescope can only operate at cool temperatures. An “umbrella” is used to shield the telescope from the Sun.
  • Theoretically, the telescope is so sensitive that it could detect a bumblebee on the Moon from the Earth’s surface.

Presentation resources notes:

  • Do not overload your PowerPoint presentation slides with words.
  • Fonts should have an average point size. Text should not move.
  • Choose font type wisely. Do not pick something too outlandish.
  • Use normal capitalization rules. Avoid unnecessary bullet points.
  • Use moderate amounts of animation.
  • Do not assume the viewer will understand the acronyms included in the presentation.
  • Do not include meaningless graphs in the presentation.
  • Maps should have the relevant locations marked.
  • Lists should be, at maximum, five or six items long.
  • Handouts should be distributed before the presentation starts.
  • Physical props should be able to be seen by all audience members, and the presentation should not make use of too many physical props.

Tuesday, October 11, 2022

CST300 Module 6

Part 1: Help Your Teammates to Develop Capstone Ideas

My teammates and I discussed various capstone ideas in our weekly meeting. A couple of the ideas stood out:

  • A file synchronization app that leans heavy on a flexible user interface. Everything would be configurable and customizable through the GUI – many different computers, either on the local network or on the greater internet, could synchronize any number of files and folder structures.
  • A stock monitoring application that, again, leans heavily on its user interface. It would aggregate data from various sources and display a highly customizable ensemble of statistics and graphs. We discussed potential issues with fetching the data, as many such APIs are behind significant paywalls.

Part 2: Keep Up With Your Learning Journal

This week in lecture mainly dealt with creating resumes and cover letters. Students learned how to organize and format the document, what topics to include, what topics to avoid, and what sort of language should be used.

This week in writing lab focused on our ethics argument paper — students posted their rough drafts to a discussion board for peer review. The final draft is due next week, so everyone will be working hard to polish their papers and finalize it for submission.

Students also created the shell of their ILP Portfolio website this week. This website will hold a record of all the major projects we complete throughout the CS Online program.

The various teams have also started working on their final video presentation projects. My team has been assigned the topic of “Right to Repair.” This is a very interesting subject; me and my teammates are excited to start researching and assembling a video to discuss this topic.

The extra credit module dealt with active listening this week. Students watched two videos – one where the listener actively dismissed and was rude to the speaker, and one where the listener applied active listening and made sure to understand the speaker. Students then answered a series of questions regarding how the listener was, or was not applying active listening.