Skip to content

JA1. Learning Journal 1

The Learning Journal is a tool for self-reflection on the learning process. In addition to completing directed tasks, you should use the Learning Journal to document your activities, record problems you may have encountered and to draft answers for Discussion Forums and Assignments. The Learning Journal should be updated regularly (on a weekly basis), as the learning journals will be assessed by your instructor as part of your Final Grade.

Answer the following questions in your Learning Journal

1. Describe what you did. You need to describe what you did and how you did it

This was the first week of this course, and I started by reviewing the course syllabus and the learning materials. I also reviewed the learning guides for the coming weeks so I can have a better plan for the rest of the term especially as I am taking two more courses this term. I then tested my self with the self quiz which I get 60% on the first try. Then, I watched the recorded lectures and moved to the reading materials of the week. Unfortunately, the reading was so long and I couldn’t finish it all, but I have a plan to cover a bit of what’s left with every week until week 4 or 5.

2. Describe your reactions to what you did

I took the first course CS 3301 Data Structures a year ago, and this week’s material covers a recap of that course. However, I felt that I needed to study some of the concepts again as I forgot some of them.

3. Describe any feedback you received or any specific interactions you had. Discuss how they were helpful

No feedback for this week.

4. Describe your feelings and attitudes

I feel excited about the rest of the course as the topics seem interesting. However, I am a bit worried about the amount of reading material and some of the topics may be hard that I need to spend more time on them.

5. Describe what you learned

I learned about asymptotic analysis and algorithm complexity; this includes the Big-O, Big-Theta, and Big-Omega notations which simply describes the worst case (upper bound), average case, and best case (lower bound) of an algorithm respectively. I also learned about recurrence relations and about the various techniques to solve them, such as the substitution, the recursion-tree,guess-and-verify, induction, and the master theorem.

Then the reading switched to the techniques or the paradigms of algorithm design which covered brute force, backtracking, and branch and bound techniques. Brute force is the simplest and most straightforward technique as it involves evaluating all possible solutions in the solution space and then choosing the most optimal one; hence, it guarantees the optimal solution but it is not effective in resource consumption.

Backtracking and Branch & Bound both skip (or prune) some of the solutions in the solution space as they are discovered to be suboptimal without evaluating them; but such techniques requires organizing (or sorting) the solution space in a graph (usually a tree) according to the problem constraints and the objective function. Back tracking is a depth-first search technique that goes down the tree until it find a suboptimal (not feasible) solution, so it skips the subtree and goes up one level and tries another branch. Branch and bound is a breadth-first search technique that goes level by level in the tree and it uses a priority queue to choose the next node to explore based on the objective function.

6. What surprised me or caused me to wonder?

I was surprised how deep the concepts of algorithms complexity and the Big-Theta, Big-Omega, and Big-O notations are. I used to work with them specifically the Big-O notation, which describes a way to communicate your code’s complexity to your colleagues, but I never needed this depth practically.

7. What happened that felt particularly challenging? Why was it challenging to me?

Understanding the general outline of the paradigms of algorithm design was challenging to me. I barely developed a mental image of those paradigms and what was even worse is that applying those techniques to a problem was even harder, but I still think that all of these will be clearer as we go through the course.

8. What skills and knowledge do I recognize that I am gaining?

I am learning about algorithms paradigms and what techniques I can use when facing a problem to arrive at an optimal solution.

9. What am I realizing about myself as a learner?

I realized that I forget things easily, so it is better for me to write down notes and summaries of the topics I am studying.

10. In what ways am I able to apply the ideas and concepts gained to my own experience?

When facing a problem, I can now approach it systematically with more structured way as opposed to randomly attacking it from different angles and hoping to find a solution.