It's the end of a great semester of CS 313E!!!! Everything is submitted and now it's just a waiting game for the results. For this final blog post, Professor Downing would like us to focus on summarizing our individual experiences over the course of the semester.
Well, if you remember anything from my series of posts, remember how important it is to go to class. GO. TO. CLASS. Besides the fact that A.) you pay for it and B.) 21% of your grade depends on it, the amount of time you'll have to spend outside of class interpreting new concepts will be significantly reduced. You can alternatively spend precious out-of-class study time practicing software development with the new concepts.
Practice is so important to your success in this class. Whether it's redoing the daily quizzes or re-coding bits of the projects, you should try to spend several hours a week just writing lines of Python code. Hear me people. Write code. That's how you'll do well in this class. You might think that piece of advice should go without saying since this is, indeed, a computer science course. However, I want to emphasize how useful it is to go beyond just being able to identify concepts in this class. The projects, quizzes, and tests won't ask you to regurgitate concepts, they will ask you to interpret them....into code.
Last, but not least, I'm putting my 100% stamp of approval on any inkling you have to take this course. Not only will you improve on your programming skills, you will improve on your communication, teamwork, and analytic skills. Professor Downing is a great professor that chooses to go the extra mile to ensure students develop practical skills that will earn them more than just CS course credit.
Have a wonderful break and Merry Christmas! :D
Only two quizzes and one exam left for CS 313e! It's been a great learning experience thus far and I'm looking forward to this week! Project 5 went well and I had another great pair programming experience. I'm proud to say that each of my four pair programming experiences this semester have been positive!
Much of our end-of-semester energy has been focused on exploring various sorting algorithms. We've discussed Bubble Sort, Selection Sort, Insertion Sort, and Merge Sort. According to our class schedule, the Merge Sort lecture was the last lecture of the semester. I'm assuming Monday's and Wednesday's classes will be reviews for the exam on Thursday. Regarding the exam, throughout the latter part of the course I've been jotting down notes with Professor Downing gives us hints as to what we should expect on Exam 2. I've also been marking parts of my notes that I think will be highlighted on the exam. I'm planning to gather each of the topics into one comprehensive list and use that list to guide my exam note sheet. Also, I'm really looking forward to working with some of my classmates as we prepare for the exam. I love the idea of creating practice tests and swapping them. Many times a classmate will remember a specific detail or concept that ends up appearing on the exam. The act of swapping practices tests or even reviewing exam note sheets with others helps to expand my grasp of all of the class concepts.
Thanks for reading. I hope you all have a wonderful week! For my UT classmates, hang in there --> FIVE. MORE. DAYS. :)
Hey y'all! This past week has been quite eventful for our class. We started off the week finding out that Professor Downing (PD)'s class website had been hacked. My first question was "why?". The website was full of Python code that would probably be of no use to someone who already knows how to hack a website (-_-). Maybe it was a joke but we're so far into the semester that little hick-ups like that aren't funny anymore.
Thankfully, PD was able to create a new class website using GitHub. Since he had his original code on GitHub anyway, I'm assuming it was a much smoother transition than if he had to rebuild the site using another website generator/host. I think it's really nice that GitHub has such a feature. Specifically called 'GitHub Pages', the feature allows users to 'host websites directly from their GitHub repos'. Learn more here: GitHub Pages and GitHub Pages Basics.
As far as class content goes, this week we were introduced to our fifth and final project, discussed Python class inheritance, and touched on binary search. I'm excited for this fifth project. The algorithm set-up is very similar to the previous project but the interface will differ a bit since we are allowed to use class inheritance. I haven't found a partner as yet but I'm really looking forward to working with one!
Test 2 is 17 days away! I had to double-check my math on that. Seventeen days y'all. SEVEN-TEEN.
Six quizzes, one project, one exam, and seventeen days until CS 313E will be over! It's a bittersweet thing to think about...atleast for me.
Y'all. We only have about 3.5 weeks of classes left!
I'm here to report on my awesome pair programming experience. Though we had a shorter period of time for Project 4, I really liked the assignment. It was fun to work with my partner and think through each step of the project before we began writing any code. My favorite aspect of this experience was having unit tests written as the main code was being developed.
In Project 3, I really honed in on writing unit tests for Python classes. It was fun but frustrating because my partner and I waited until our code was fully functional before writing the unit tests. Despite the frustration, in the end we were able to achieve 99% coverage! This time around, writing the unit tests during the code development process proved to be so much more efficient. We were able to perfect each major code segment and thoroughly test it before moving on. It was great and once we were done writing code for assignment functionality, we realized that we were also done writing testing code. The cherry on the top? We achieved 91% coverage!
At the beginning of the semester we were introduced to "coverage" and I wasn't too sure what it meant or why it is so significant in software design. In short, your % coverage shows how well you tested your code. The higher the percentage, the better! A tip on getting higher coverage is to test methods or functions that call other methods or functions. The calls require your tests to check several sections of your code at once thereby increasing your coverage without writing too many unit tests!
Have a wonderful week friends!
This week we finished up our discussion of Python Data Structures and we were introduced to Project 4 and it necessitates more usage and a deeper understanding of classes. I'm so very happy that I setup my partner situation much earlier this time around. Working with project partners has been a great experience for me in general and especially in this class.
In our data structure lectures and quizzes, I've noticed a very specific trend in Professor Downing's approach. He will introduce the concept, write code, give us about 10 minutes in class to write more pieces of code, and quiz us the next class period by asking us to write more code. The quizzes aren't your typical "regurgitate this and regurgitate that" type of assessment. Instead, we must understand the concept enough to know how to manipulate the code. Thinking all the way back to Exam 1, I can say this method of testing should basically be expected if you (my wonderful reader) decide to take a course with Professor Downing. Absolutely do not expect to be asked to simply re-write what you go over in class. It's essential that you (we) internalize the class concepts to a point where we can take it to next level when asked to on quizzes and exams. Exam 2 will be so much "fun".... (sigh) :)
Next up: a look at recursion! It's amazing to think that there are less than five weeks and only one project left!
Thanks for reading!
Ignore the title if you want to. I'm tired and it's the first thing I came up with.
Feeling somewhat defeated by this week, I decided to write my post earlier than usual. The time I spend blogging is really relaxing for me.
Here are the highlights from CS 313E this week:
We discussed singly linked lists and doubly linked lists in detail. In continuation of our focus on Python data structures, we explored linked list data types. It's really helpful for me to actually draw the linked list and visualize the effects each attribute has on the information in the list.
My name was *finally* called in class. Of course it was called when I was least expecting it. Thankfully (hopefully), I answered my question gracefully. My name was called during one of our usual post-quiz discussions on Wednesday. I was tasked with the discussion of number 2 on Quiz #21. The question was,
"What data member could you add to sllist to make it possible to define append() and pop() efficiently?" and the correct answer is 'none'.
There was no quiz today (Friday). Shocking. Really a shocker for me. Now I'm kind of scared for what Professor Downing has planned for Monday's quiz. Will it be twice the length of regular quizzes? Will it count for twice as many points? Was there really no quiz today? So many questions.
We got our Exam 1 Scores back. While I'm not upset about my grade, I'm opting for 'no comment' on this subject :) --Maybe next week...
Our third class project was due. Again, no comment.
And with that, I'm off! See y'all next week.
These weeks are going by so quickly now. Between Senior Design, recruiting events, school, my internship, and life, sleep is something I would probably pay for daily.
This past weekend I participated in HackTX, a hackathon at The University of Texas at Austin. To say the least, it was life-changing! I'm definitely going to write up a full post about it on my other blog so be sure to check it out!
Anyway. You came here to read about CS 313E.
Well, we've switched focus from the first exam to Project 3. I really like this project! It deals with the Australian Voting algorithm. Instead of choosing who their favorite candidate/desired winner is, voters rank all candidates in the order they would want them to win. The two exist cases are 1) if one candidate has more than 50% of the votes, or 2) if all candidates still in the running are tied. In case 1, that candidate is the clear winner and in case 2, all tied candidates are winners. If neither case is achieved, we look at the votes, cut out all candidates tied for the lowest score, and recount their ballots based on their second, third, fourth, and so on choice until we reach one of our exit cases. Our task is to develop and code that algorithm in Python.
We spent the first part of last week discussing Project 3 and the second part discussing Python data structures. Our focus was on 'list', 'deque', and 'linked list'. We went through each data structure and studied the cost/complexity of 1) adding elements to the beginning, middle, and end, 2) removing elements from the beginning, middle, and end, and 3) indexing elements. We also touched a bit on stacks and queues and their respective lifo/fifo functionalities. I'm really interested in learning more details about Python data structures.
Funny Story: When I first saw the word 'deque' (pronounced: deck), I thought it was a misspelling of 'dequeue' (pronounced: dee-cue).
Thanks for reading!
A few minutes before our exams were distributed, someone joked, "What if the exam is just one long Python project?". They weren't too far off.
We were told ahead of time that the exam would consist only of writing code. What I can absolutely say is that the content of the exam was what I expected. What I did not expect was how we were tested on our understanding of each concept. Our exam surrounded the idea of prime numbers and of course it covered all of the major topics Professor Downing has been stressing since the beginning of the semester. We had to build a class. We had to know how to build an iterator and an iterable. Non-surprisingly, we had to write tests using asserts. However, instead of direct questions asking to "make a list iterator" or "use map/zip", we were given problem statements and had to determine the appropriate usage of each major concept. I'm definitely not complaining with this type of testing, I think it's a learning experience in itself as we gauge our personal understanding of Python and Software Design as a whole.
Another given - it absolutely helped that I prepared a guide sheet ahead of time. As Professor Downing mentioned beforehand, the actual sheet wasn't of much use during the exam compared to the utility of preparing the sheet before the exam.
So the exam wasn't "super fun" but it wasn't "super terrible" either! Now it's just time to wait for the results and get started on Project 3.
Thanks for reading and I'll see y'all next week! :)
Well it's definitely October a.k.a. Midterm season. With that comes the CS 313E Exam 1!
So from last week's post I mentioned that I generally mark pieces of my notes that I personally think would be wonderful target areas while studying for our first CS 313E exam. Yesterday Professor Downing posted the exam review on Piazza and many of the topics and bits of code that I marked as important were on the review as well!
In the review, as well as in class, Professor Downing stressed that a very effective study strategy involves testing yourself and writing lots of code. Continuing with the collaborative theme of the class, it's crucial to be a part of a study group. I definitely agree that self- and group-quizzing are extremely effective study strategies. I've been strengthening my Python skills by reviewing the methods we learned in class and actually running them on my own. I'm really looking forward to getting quizzed by my classmates. When you work and study with other people, your learning process is much more well-rounded than it would be with individual efforts.
*Sidenote*: I find it interesting that our exam is an evening exam! I really appreciate the extra 30 minutes we get though.
Good luck to all of my classmates! I'll be back next week with a report on how the exam went.
See y'all then! :)
Netflix is over and turned in! :D
For this week's post, I decided to share with you all how I generally come up with topics to write about each week. So far, I haven't missed a day of class. I find it very interesting to just listen to the discussions and the daily quizzes keep me on my toes. It's also really interesting when Professor Downing calls on individual students to participate in the discussion. I'm not really sure how each student is chosen but it seems to have something to do with how the roster is setup. I keep hearing the same student, David Balderama, get called. Poor David! My name has only been called once and that was during the first week of school. My viewpoint is that I want to get called on just so I can participate in the discussion BUT I would love to know ahead of time so that I can prepare to answer correctly. ....Only in a perfect world ha!
Anyway, the whole point of that spiel on my class attendance was to share how I come up with blogpost ideas. Generally, as I take handwritten notes in class, I star topics or bits of code that I find especially interesting. Sometimes I even leave a little note that says something like "good idea for blogpost" or "might be on the exam".
This week, the two topics I found most interesting came from two of our quizzes. We were tasked with calculating the outputs of Python's map() and reduce() built-in functions given the quiz inputs. It was a good learning exercise to be able to understand the algorithm behind the functions before Professor Downing revealed that they were both already built into the language. I'm 98% sure these two functions are also going to be on the exam!
Thanks for visiting my blog! Born in Guyana, bred in The Bahamas, and maturing in Texas, it's easy to say that I've had many interesting and unique life experiences. Blogging is my chance to share them!