Posts

CST370 Design and Analysis of Algorthms Week 6

 This week we learn about AVL tree.One problem with binary search tress is that if the tree is too unbalanced or skewed, the operation can be linear time. The AVL tree is a balanced binary search tree, and the difference in height between left and right subtrees is either -1, 0 or 1. The difference is called the balance factor which is height of the either the left subtree and the height of the right subtree. AVL tree uses rotation as its operations. A rotation is a local transformation of a subtree whose balance factor has become either +2 or -2. In other words after inserting a new node, if the AVL tree becomes unbalanced, rotations are applied to restore balance. The four rotations are Right rotation, Left rotation, LR rotation and RL rotation. Another topic that was discuss is 2-3 trees. A 2-3 tree is a search tree where each node can have oen or two values (2-node or 3-nodes) All leaves are at the same level.  We also discuss about Heap and Heapsort. A complete binary tre...

CST370 Design and Analysis of Algorthms Week 5

For week 3 of CST370 Design and Analysis of Algorithms we learn about quick sort. Quick sort was first proposed by C.A.R Hoare in 1962. It uses Divide-and-Conquer and very popular but its efficiency can be tricky. Basically quicksort an n-element array it "Divides", in partition, the array into two subarrays around a pivot such that elements in the lower subarray elements in upper subarray. It then concquer recursively sort the two subarrays and combine. Quicksort worst case scenario when the data is already sorted and its has O(n^2) at its worst. Best case however it has O(nlogn) and its average case and use has that efficiency.  We also learn this week about Binary tree traversals. A binary tree is a divide and conquer ready data structure. One classic problem with binary trees is to systematically visit each node. There are three binary tree traversals called inorder, preoder and postorder. Preorder, from the word "Pre", traversal visites the node in the order Ro...

CST370 Design and Analysis of Algorthms Week 4

Week 4 is a short week and only few things was discussed. In particular this week we learn about merge sort. Merge sort basic idea is to split the input into two halves. Sort the first half of the input recursively. Sort the second half of the input array recursively. Then merge the two sorted halves together. Merge sort uses the divide and conquer technique to sort an input array with n elements. During the time analysis of merge sort, using master Theorem, it shows that the case is O(n log n). Since the recurrence relation T(n) = 2* T(n/2) + n-1 which is 2* T(n/2) + O(n). With master theorem a = 2, b = 2 and d = 1. This relation shows that a = b^d which is 2 = 2^1 which shows that it is O(nlogn). Other than that I basically had a review with everything from week 1 to week 3. Week 4 is midterm that is why it is short. Basically re-learn everything that I learned in the past plus the new Merge Sort concept.

CST370 Design and Analysis of ALgorthms Week 3

 For week 3 of CST370 Design and Analysis of Algorithms we learn about Brute force string matching and exhaustive search.  With the string matching problem, we basically try to match the characters in a text and find a substring of the text that matches the pattern. Brute-Force matching basic idea is to compare the characters by character. If a mismatch occurs shift a character and restart the comparison. The best case for this is when immediate match occurs, a minimum number of comparisons will occur. It is often easy to think about the best case scenario but worst case is not. A worst case scenario may not be too obvious since it may require more comparisons.  Exhaustive search is a brute force approach to solve combinatorial problems. The basic idea of this are to generate all potential solutions to the problem. Evaluate each case one by one and determine the solution among the possible cases. For example Traveling Salesman Problem (TSP) is to find the shortest tour th...

CST370 Design and Analysis of ALgorthms Week 2

Week 2 of this class was a lot to take in but I was able to follow along well. Algorithm Analysis is the process to identify the category or order of growth of an algorithm. We learn about the three notations which are the upper bound, tight bound and lower bound. We learn about Asymptotic Notations for Algorithm analysis. An algorithm’s running time t(n) is said to be in O(g(n)), denoted t(n) ∈ O(g(n)), if there exist positive constants c and n0 that satisfy the following condition. As a sample if t(n) = n^2 + 3*n + 5 then we can say that t(n) is O(n^2) since we can ignore the constants and the function has n^2 as the highest power. We also learn about the order of growth of algorithms. First is constant which is O(1) then it goes for more execution time. Logarithmic O(log N), Linear O(N), Log-linear O(N log N), Quadratic O(N^2), Cubic O(N^3), Exponential O(2^N) and lastly Factorial O(N!).  Another topic that was discussed was the Non-Recursive algorithms which are algorithms that...

CST370 Design and Analysis of Algorithms Week 1

 This week I learn about general knowledge about algorithm. Basically an algorithm is a sequence of order/instruction for a solution of a problem. In the context of computer science it is best to use the least amount of instruction to achieve the output we desire. This doesn't happen all the time but it would be considered as the most efficient way. I also learn about Euclid's algorithm for GCD. This algorithm mainly solves or finds the greatest common divisor by doing gcd(m,n) = gcd(n, m mod n) where n is the smaller number while m is the bigger number. This algorithm will go on until one of the number is 0. We also tackle about other gcd calculations alternative solutions. Overall problems can be solve different ways and it is in our best interest to use the most efficient way to save time and memory depending on the algorithm. We also learn about Pseudo-code and how to write it. Pseudocode is basically a high level description of algorithm. It is written for people to be abl...

Wk07/08: Learning Journal Summary

  Wk07/08: Learning Journal Summary   Looking back to HW 1 I would approach it differently on how I initially did it. When I first did it I didn't check the test cases first. Now that I know checking the test cases can help me understand what each function or code does, I will try to read the test cases first before jumping into coding. Second, I would do the functions that doesn't have dependency of other methods. Doing so helps me understand the flow of the logic. While I was initially reading through the documentation, I would jump from one method to another just because I don't fully understand the flow of it. Implementing methods that can work by itself helps me understand the workflow logic. Other than those two things I can't think of any major approach that I need to change. Maybe some minor changes I can do is to clean up the documentation and make sure the TODOs are done before submitting my work.   Overall through out the entire class I'm really proud and...

CST 338: Wk05 Learning Journal Markov

  Who did you work with?  Tim Shaker   What was your strategy for solving the Markov assignment? My Strategy is the same as last time but with at the same time bringing along the few things I learn from my previous projects and peer reviews feed back. I try to read the whole project and understand what is needed. Briefly go over the test cases on what are being tested to understand the functions. When it actually comes to coding I've use my previous strategy of coding methods that doesn't uses any other methods. I code the field type and constructor first then jump to methods. I was able to run the code successfully initially but was giving the wrong output and only 2 test cases pass. That is the time I try to fix the bug 1 by 1. I look for where the bug is by debugging 1 test cases at a time. Stepping through the code and check the output each steps. Once everything is done and all test cases are passing and main is running, I add the javadocs for methods. At this point...

CST338: Wk04 Learning Journal Project 1 review

  You can work with up to three people (you MUST work with at least one other person) With whom did you work? I work with Tim Shaker What was your strategy for solving the assignments? Did you start writing code right away? Did you plan it out on paper?  Initially I read the documents of the requirements for the program. I then check the test cases involve within the project. I then started coding the things I can easily understand. I writing the codes of methods that doesn't require any other methods. Once I wrote all the necessary methods and classes needed I check the test cases to see which one fail. I try to solve each bug one at a time until everything passes.  What was THEIR strategy for solving the assignments His strategy was to first read the documentation, then scaffold out out the classes and resolve any syntax errors so that the code would compile. From there, he worked on implementing the logic as it was described in the documentation, focusing on gett...

CST 338 Week 3

  Whos code did you review? Tim Shaker The reviews you wrote: Overall Tim's code is clean and easy to read. I didn't see any major and minor issues with his code. The way he wrote code is the conventional way to write code in java. His variables are type and named properly. All the test cases pass, the whole project runs properly and the logical flow is easy to follow along. Summarize the feedback you received about your code from your peers: Overall I received positive feedback from my peers. Had some java doc confusion with one of the methods I wrote since my documentation can be misleading if interpret in a different way. Also pointed out to not forget my TODOS in my code. Identify any trends you noticed when evaluating the code of others such as: everyone struggled with sorting or unit tests that were hard to pass The trends I notice is that my peers pretty much write almost identical as mine (not in a bad way). I guess it is good everyone has the same way of solving some o...

CST 338 Week 2

 For week 2 of CST 338 Software design we tackled a lot about git commands, test in java and interfaces. For Git commands I was kind of familiar with it already but I learn more about how to do it in command line. I also learn on how to do it with IntelliJ interface. Whether to use the command line or interface is up to the user but I try to keep the balance in using both so I can retain what I learn and how to do it. We also learn to push everything in a remote repository which is Github. Both the command line and IntelliJ interface has a way to push into remote. I also learn how to complete PR and push everything in main. Also when merging locally, it is preferred to re-base while merging in main. Unit testing is also important when developing programs. As a QA myself, I know how important it is, but my job mostly focus on manually testing software. I learn or got familiar on how to create unit test in Java. This is important to ensure the methods involve in each class are workin...

CST 338: Week 1

 For the first week of CST 338 we were mostly taught how to set everything up with InthelliJ and make it compile java language using JDK. We were also instructed on how to set up android studio which we haven't gone much further other than installing it and setting it up for future projects. We were also given task which required us to use Github and learn from the experience. I haven't  code nor do I have experience in coding java but one of the practices that help me was the coding challenges in codingbat.com. The knowledge I have with java is the documentations I read and basic ideas like initiating variable, some few logic flows like if statements and loops, and some basic arithmetic set up. The challenges in codingbat.com is beginner friendly and starts easy and it amplifies the difficulty as user moves a long. I like this method since I get comfortable as I move along. Some of the challenges I've encounter are remembering syntax and methods I can use for certain probl...

Week 8

  Part 1: Review Other Teams' final video projects  Video 1: https://www.youtube.com/watch?v=EUv2vh-8NFg 1. is the topic well covered?  Yes the topic is well covered. As a person who have no idea or knowledge about the topic, the video is well informative.  2. is the presentation clear? The presentation is clear, the text are easy to read and not convoluted and their voices was clear and understandable.  3. how is the quality of the research? The quality of research is  good enough for a person who has background knowledge in CS but unfamiliar with the topic being talked about. The video explain the topic clearly using the technical terms necessary in CS field. 4. how is the quality of the video production? The video production is clear. It is not fast and not slow just enough speed for readers to read the text and understand what the speaker is saying. There were some part that where the speaker was speaking low but it is nothing critical. 5. is the vi...

Week 7

  Part One     For our final research video project planning we collaborated through meetings and chats in slack. All the team members in our group are active and constantly giving ideas on how to tackle some process. We also shares some resources or websites where we get information for our research so our sources are almost similar. We all end up using Adobe Express for short video and will do PowerPoint presentation for the long video. For adobe express we are able to work on the project asynchronously in order to avoid blockers and we can focus on our sections. Overall the plan was moving on reasonable space considering we are using a new technology we haven't use before. I wouldn't say the process was smooth but it wasn't rough either. I believe this kind of collaborative projects will have some minor issues since each individual person has their own strength and weakness. It doesn't help that we own have different availability and will have to do our best to commu...

Week 6

  Week 6   Part 1: Help Your Teammates to Develop Capstone Ideas   For this week meeting we had to divide the time meeting to discussing creating the video project and  talking about capstone ideas. We briefly discuss some capstone ideas  but the one that caught our attention the most was a machine learning project. It was about a product that help or assist physicians with diagnosing brain cancer using trained machine vision. Since machine learning or AI is a big topic right now in the software industry, we like the idea of creating a similar project. A project that can impact some real world industry and applying machine learning ideas and apply it. Not only our product has the potential to contribute in society but it will also help us understand and learn more how to create an AI product and how machine learning works in general.   Part 2: Keep Up With Your Learning Journal     This week I learn how to create a website using weebly. It is a s...

Week 5

Image
 Week 5   Part One: Support and Comment on Teammates' Goals Comment 1: https://edlcsonline.blogspot.com/2025/09/week-4-learning-journal-education-goals.html      Comment 2: https://alexandercsumb.blogspot.com/2025/09/my-educational-goal-in-cs-program-my.html?sc=1759716690276#c3901700382400993030     Part Two: Possible Capstone Ideas (30 minutes) These lists are subject to change but this is roughly what I imagine doing as of now.   CAD software or 3D Design software:  I currently work on projects that develops software to design dental products. 3D design software has always been my passion but for my software it would focus more on general objects that can be printed. It will probably be similar as Blender. I will try to make it as user friendly as possible. This project can help me learn more about graphics and optimization. The only thing that is making me hesitate to do this for future capstone project is the time. But this is definitely ...

Week 4

  Part One: My Educational Goals My educational goal for  CS program is to have a strong foundation in computer science theory and practical skills. I should be able to design and develop software programs and computational solutions. Have a more effective problem-solving skills and be able to adapt easily in new and emerging technologies. Attaining my Bachelor Degree in Computer Science is also a goal of mine but I think it is enough. My the actual goal is to pass all the classes with clear understanding of what was taught and be able to retain it and apply some skills that I learn in the future. This goal of mine is a long term and far from being achieved. It will require discipline, consistency and patience. The short term goal that I have is to pass both CS 349 and CS 300. I believe we are halfway for this two courses and I should be able to achieve it soon as long as I keep doing my work and keep my grades up. Part Two: My Career Goal   My career goal as of right now...

Week 3

Week covers some techniques on how for study. One of the techniques I need to improve on is memory. I learned this week that there were 3 styles when it comes to memory techniques. Visual, Auditory and Kinaesthetic learners. Personally I've been doing and using Kinaesthetic style without knowing about it. It is a style where I learn effectively through practice and explicit work. I tend to forget the topics I learn within a week or two and it is hard to retain certain knowledge when I do the visual and auditory style. This is the reason why I must improve this memory study techniques. Through Kinaesthetic style I can easily memorize or retain knowledge especially if it became a habit. For example when I was first learning how to program, I struggle writing loops in C++ class. But through writing for loops and while loops almost everyday, from writing on paper or typing on keyboard, it became a routine for me and innately builtin to my brain on how they need to be written. Anot...

Week 2

Image
     Module 2 lectures focuses on the present condition of business and company. I learned a lot starting from the the state of software industry. Innovation itself moves fast in today's age, and in order to keep up with it, people has to learn to adapt quickly as well. I also learn about different methodologies that company uses for software development. I was already aware of the two present method which are  agile  and  devops  as my current company uses this method but I learned about the continuous method . Essentially there were methods that was used in the pass which are Waterfall, Capability Maturity Model, and Rational Unified Process . I also learn more about project management. I learn that project management is mainly about planning, organizing and managing resources to achieve the goals that the group is trying to attain. Different tools and techniques on project management such as managing constrains that hinders in project development su...

Week 1

 Week 1 learning for CS Online, I learned the the brief history of CSUMB and it was founded during 1994. I learn more about CS online program and the faculty that involves with it. Along with it I also learn how to navigate to canvas and available resources for CS Online program. The technical things I learned for week 1 are the different strategy for online success and how to be a better online student. I learn that in order to be successful in online class, I have to communicate, plan and read thoroughly. Lastly I learned how to use different chatGPT prompts and how I can use it for my everyday task or work. Different insight and use cases from variety of people. As for CS 300 I learn different essay formatting. I also learn how to create a professional and academic papers for essay. Overall week 1 sets student up for the fundamentals and be ready for the work ahead that is coming.