Tuesday, November 8, 2022
CST499 - Week 2
Tuesday, November 1, 2022
CST499 - Week 1
What project milestones did you accomplish this week?
Conference Paper
This week I finished writing my part of a conference paper that is being reviewed by Dr. Thulasiraman. It contains a summary of all my work over the last few months involving feature extraction from 5G and Modbus PCAP files and the training and tuning of basic autoencoder models. This conference paper provides the basis for my current work.
Model Configurations
This week I created a convolutional autoencoder model. This was the final model I needed to build. I already tested it with the original feature representation (ICMP flood) using scaled and unscaled data.
Feature Representations
I finished aggregating results for my “novel flows” idea using the basic autoencoder model. Rather than using “synthetic flows” to test my models (as before), I excluded a couple of real flows from training and marked their subflows as anomalous. The partitioning of the flows is also different from the previous work (forward flows vs. inward flows).
What is your plan for next week?
Over the next couple days, I am going to finish testing my models with all the feature representations I have. Three models are being compared for anomaly detection: Basic autoencoder, convolutional autoencoder, and KMeans. Feature representations include flows (forward and inward), MITM, and query responses. Results will be aggregated and sent to Dr. Thulasiraman for review. This will conclude my initial testing, although I do not expect any breakthroughs.
On Friday, Raytheon network engineers will be meeting with our team to discuss steps forward. We will be discussing the network architecture and concept of operations (CONOPS). Hopefully this results in new ideas for feature representations. I am going to ask questions about query response values I found in the Modbus data. I am also going to try to get an update on when we can expect new feature sets.
Thursday, October 20, 2022
The 5.4e+03 Second Litmus Test
This is a blog post from my late friend and mentor Frank Madrid. Posted February 24, 2018.
To a computer science student with no industry experience, few things are as unnerving as a technical phone interview. An interviewer must determine if the interviewee is slightly more proficient than a monkey using vim and implicitly assign a value to 4+ years of theoretical education and technical experience in under 5400 seconds.
The Google Technical Internship Interview
A quick Google search immediately reveals the mystery and confusion surrounding the technical interview process. Forums are riddled with variants on the question, “What questions are asked during the Google Technical Interview?”
I assume the daunting and all-encompassing list of candidate topics indicated by Google in their 8-page Google Slide presentation is what solicits such a response.
In summary, these topics include:
- Algorithms
- Data Strucutres
- Operating Systems
- Mathematics
Though a list of four topics may seem far from all-encompassing, any second-year computer science student with 10 fingers (yes, a binary joke) can count how many classes do not use some subset of these topics. The possibly sole class meeting this requirement includes Introduction to Programming where the concept of an algorithm is barely introduced amidst the hurried foray to understand proper C++ or Java language syntax.
Preparing for the Technical Interview
Two weeks were spent reviewing and practicing these concepts in preparation for the technical interview. I attempted to find sources which offered a breadth of knowledge but didn’t require tremendous effort to understand any particular topic, and a slew of problems to reinforce the concepts learned during the review.
Reference Material
The first, and highly recommended text is The Algorithm Design Manual. This text offers an introduction to the most important data structures and sorting algorithms without being weighed down by heavy symbolic notation. It also offers a catalog of algorithmic problems which is useful for solving challenging coding questions. It also offers amazing interview questions but lacks a corresponding solution manual. This text is is available from Amazon for about $40.
Practice Problems
Cracking the Coding Interview included many problems targeted at a specific topic but most of my beneficial practice was found on websites dedicated to hosting a plethora of programming questions such as LeetCode. These problems did not necessarily indicate the appropriate data structure or algorithm to solve the problem and were sufficiently vague enough to be thought provoking yet not misleading. Solutions to some of the more interesting problems may be featured in future posts but many, if not all, of my solutions can be found on Github in my public repository.
The Interview
After the usual introductions and pleasantries, I was excited to finally begin the technical interview and witness what exciting problems the Google software engineers would be challenging me with. The questions were of average difficulty, completable within 30 minutes, and didn’t require a brilliant or archaic solution. The three solutions required string manipulation, the use of basic repetition structures and binary arithmetic operators, recursion, dynamic programming, and Big-O analysis.
I was not explicitly asked to withhold any information regarding the interview, but the specific content of the interview was indicated to be confidential.
As is commonly stated in their publicly available presentations: the interviewer is more so interested in interviewee’s ability to analyze and solve a problem than their ability to code. A fundamental understanding of the chosen programming language is of course required, but my interviewers allowed the use of loose pseudocode to explain ideas which would have required multiple lines of instructions. After each implementation, the interviewers indicated particular instructions which would have resulted in errors and allowed me the opportunity to identify and correct the error before moving on.
Final Thoughts
Being my first internship technical interview, I allocated a large percentage of my free (and not so free) time to the review of concepts which had the potential to be discussed during the interview. In actuality, hardly any topics I specifically reviewed were discussed. All questions would have been answerable without the review but not with the level of detail I was able to provide. In hindsight, the amount of preparation, though appropriate for a full-time position, was overkill for an internship.
Within two weeks, I will hopefully hear about candidate projects which are viable with my skillset. If not, then I will have to consider other internship opportunities.
CST 438 - Week 8
5 important things I learned in the course
Software Engineering is not programming
Agile Software Development
Full Stack Web Development
Code Testing
System Requirements Specification (SRS)
Tuesday, October 18, 2022
CST 438 - Week 7
Agile vs Waterfall
Friday, October 7, 2022
CST 438 - Week 6
Security Vulnerabilities
- CSRF (Cross-site Request Forgery) attacks allow attackers to send data to a website that you are already logged into. If the legitimate site relies only on session cookies for validation of user requests, it is possible for a malicious site (that you happen to visit) to take advantage and make HTTP requests using those session cookies. This may result in passwords being changed or information being stolen. One way to mitigate this attack is for the legitimate website to include a CSRF token with all requests. Tokens should be unpredictable and tied to a user's session. If the token is invalid or missing, the request is rejected.
- XSS (Cross-site Scripting) attacks allow attackers to "trick" web servers into returning malicious JavaScript code to their users. This can happen if user input is not properly filtered. For instance, if a website stores user input in a database for later viewing by other users (such as a car sale listing website), a malicious user could include <script src="..."> in their listing which would then be delivered to other users who view the listing, resulting in their browser running the malicious script. Attackers can use this to steal session information and impersonate a legitimate user, potentially stealing sensitive data like credit card information. One way for websites to mitigate this is to prevent users from including angle brackets in their input by replacing them with < and >, respectively.
- CORS (Cross-origin Resource Sharing) is a policy that allows web servers to request resources from other web servers outside their domain. For example, website foo.com may need to request a resource from bar.com (like an image file). However, web browsers do not automatically allow cross-origin requests due to their same-origin policy. This means that web servers must explicitly allow requests from outside their domain. If a web server implements its COR policy improperly (e.g., using wildcards in whitelisted domains) or makes it too lax (allowing requests from any domain), attackers can take advantage.
OAuth 2.0 Message Flow
Thursday, September 29, 2022
CST 438 - Week 5
Unit Testing vs. End-to-End Testing
- Fast: If unit tests are not fast, they will slow down development time. If a test takes 5 minutes to run and must be run multiple times a day, it will lead to reduced productivity.
- Isolated: Unit tests do not depend on the results of other tests, and they focus on one specific behavior.
- Repeatable: Tests should produce the same result each time they are run.
- Self-validating: The tests themselves verify whether they have passed or failed. There should be no manual interpretation of results because it takes too much time.
- Timely: Unit tests should be written alongside the code they test. The sooner code is tested, the better.
Beneath the Old Pine
I’m sitting under the old pine tree in Sunrise Park — the one that leans gently toward the fence line behind my childhood orchard. From here...
-
Concurrency This week we entered the realm of multithreaded programs. Each process can be split up into threads , which execute inside the s...
-
Using Java with SQL This week my team implemented methods for a Java application that interacts with a web server and a database. A big part...
-
Secure Sockets Layer (SSL) This week was a bit short as it is our last week, but we did cover a couple new topics. SSL is used to enhance TC...




