Tumgik
csc104slog2017-blog · 7 years
Text
SLOG #3 (Dec. 6)
Coming to the end of the term, I have gained a fair sense of the most effective studying techniques for me and I will share some of my findings here. Hopefully, they will be useful for future students (those of you reading my blog) studying the course. 
What advice would you give to a student beginning this course about
 (a) how to design a function
A: To design any function, whether it is easy or difficult, it is the most important to figure out what the question is asking for. Do you have to define something or verify if something is true or false? Anytime you are uncertain, it may be helpful to look at the structure of any documental check-expect functions given and search up the key terms in the CSC104 manual.
From there, try to draw connections between the problem and relevant concepts learned in class. This requires you to first understand when and where should different elements be used. Just as the blogger of https://guoxin4csc104.tumblr.com/ mentioned in her blog, I also highly recommend that you “perceive the rationales behind the functions rather than relying on memorization”; this course is not about who can memorize definitions more accurately, but about whether you are able to apply the knowledge learned given different scenarios.
 And if, by any chance, the design is too complex and involves too many steps to handle at once, imagine a simpler version of the problem and see if you can figure that one out first. 
When you are ready to put everything together, start with either the most inner component and work your way out or first build the function's framework (ex. recognizing the need for a conditional statement) and then add any minor details to complete the function (ex. filling in the actual commands). 
(b) how to prepare for this course?
A: In terms of preparation for the course material, I would recommend downloading Drracket and play around with it. This is a playful and effective way to get yourself familiar with the CSC104 language and the use of parentheses. Gaining these skills will benefit you all term, from writing quizzes and tests to designing your own functions. In addition, you can read through the textbook and instructor’s lecture notes from previous years, watch instructional videos, or even try to start on some of the weekly exercises to get a sense of what to expect on evaluations.
If you have time, also scam through a couple of students blogs like mine. They can save you a lot of trouble in figuring out where to head in learning and studying. Tips and strategies bloggers give are particularly useful because they had been in the same boat. Whatever the method, be sure to take advantage of as much of the resources available to you as possible.
And once classes start, I strongly recommend that you attend every lecture and stay on top of the course material and ahead of the schedule; the course may start off easy, but that does not mean good grade comes for free. In fact, course material piles up and gets harder very quickly. Personally, I enjoyed the course a lot and I think as long as you put in sufficient amount of effort, you should be able to do very well in this course.
0 notes
csc104slog2017-blog · 7 years
Text
Weekly Update- Week of November 27 (Second Asssignment)
In lectures of this week, we compared the similarities and differences between writing numbers in base 10 (which we are used to seeing) versus in base two (binary representation). We also got practice in computing very large binary numbers from the base case using basic mathematical operations and the repeating pattern of them.
As for the second assignment that was due this Friday, I ended up spending less time than what I expected. Nevertheless, it is still a very effective tool to evaluate whether we understand everything taught up to now, incorporating bumps here and there. In addition, I had a hard time drawing conclusions from the animation because patterns are scattered and diffcult to find.
After all, completing the project is a unique experience that changed my views upon the limits of Drracket. Until now, we have been working mostly with commands producing stationary objects. But with the aid of the Big-Bang function, programming simply games and animations is now possible.
0 notes
csc104slog2017-blog · 7 years
Text
Weekly Update- Week of November 20 (Fib-Numbers)
We started this week by learning an important application of nested lists—how websites incorporate them in their designs. This is the very first time we see how Drracket helps us in analyzing codes we are used to seeing when we browse webs on the internet.
Following that, we are introduced to fib-numbers and learned about the two distinct ways of defining them in Drracket, one of which takes much shorter time for Drracket to process than the other. And by using the more efficient definition along with the number to string and string to image functions, we designed an animation that showed continuously enlarging fib-numbers using “big-bang”.
Wednesday's quiz, on the other hand, tested us upon the computation of recursive functions contained within conditional functions. Although writing out the actual steps to commands isn't difficult, that process can get very lengthy and complicated-looking when the recursion has to be performed multiple times before arriving at a result.
0 notes
csc104slog2017-blog · 7 years
Text
Weekly Update-Week of November 13 (Flattening Functions& Second Test)
We deepened our knowledge around the concept of flattening nested functions (by effectively using the properties of the recursive and conditional functions) in class on Monday.
And on Friday, we had our second term test. Though my schedule was still fully packed, I tried my best to start early in studying for it this time. I worked through all the available practice tests and made sure I was comfortable coming up with recursion functions I lack practice upon, just like last time. And in doing that, I discovered that coming up with the function body of a few base cases helps a lot in identifying the different cases needed for very complicated looking functions and writing out its general case.
Though I find the test to be harder than the previous one, it is still fairly manageable with sufficient practice beforehand and cautions when writing out the steps. Only the question involving the use of “local” was what came out to be a surprise for everyone because it never came up in any of the past tests. From this, we see that it is clearly not enough to rely solely on past tests. It is equally important to go over lecture notes and fully understand everything taught in class.
0 notes
csc104slog2017-blog · 7 years
Text
Weekly Update- Week of October 30 (First Assignment)
Last week, we got our very first assignment and it was due this Friday. At first, most people thought of it as a relatively easy task and didn’t pay much attention to it. But as it turned out, completing the assignment actually toke much longer than what I expected.
I knew there was going to be a lot going on this week for me starting my second round midterm tests and projects due. So, I decided to get an early start on my assignment last Thursday, making me way ahead of the others.
I spent hours Saturday afternoon getting through many of the difficult parts everyone was having problems with such as coming up with the structure of the strip-trailing-punctuation function. On Monday, I went for office hours for clarifications on the remaining parts and again worked for hours that night revising my work and figuring out which parts were causing the errors. And after verifying a few minor details with the TAs on Wednesday, I was ready to hand in my project.
Throughout the week, I saw a lot of people trying to cram their project last minute and simply wanting to get all the answers from office hours without thinking through the questions themselves — a common phenomenon to be changed next time. Looking back, I am very glad that I started early on the project. And even though completing the assignment was tough, I feel fulfilled for my accomplishment at the end.
0 notes
csc104slog2017-blog · 7 years
Text
SLOG #2 (Oct.27)
Now that we are at the halfway point of the term, it is a good time to step back and reflect on what has been going well is what isn’t in studying the course.
Q: How are you preparing for the quizzes/tests? 
A: For quizzes, of the studying strategies I mentioned in SLOG #1, I find practicing doing the weekly lab exercises to be the most efficient. Not only do they cover the key ideas and concepts we need to know for the week, but also give a good sense of what types of questions to expect for the quizzes.
With regards to the first term test we had, I actually felt a bit anxious at the time because it is unlike anything I am familiar with— the testing location is somewhere I have never been to and I was not assured of its level of difficulty nor format. I have outlined the step by step procedure I toke to study for this midterm in the October 8th weekly update, but I want to once again reinforce the importance of acing the past tests (ex. writing out the steps to each question on paper first and compare the results to what you get from stepping through the function in DrRacket) posted on the course website. They helped me a lot in figuring out the testing format and identifying the specific areas/topics I needed to keep working on for improvements.
As the test and quiz results suggest, my studying strategies are working out fine. I have also been doing a great job in persevering these habits as planned and will continue to do so to keep up my good work.
Q: Are there any images you've made, or even functions to create images, that you enjoyed or are proud of? 
A: The controversy I find in playing around with DrRacket is that many of the seemingly clear commands with predictable outcomes can be very difficult to put into a programming context in reality. While seemingly time-consuming functions such as building a tower of images with any desired size may, in turn, take no time to construct. Such unpredictability is very cool to me and gives me motivation to construct the functions to see what they are like.
I am also amazed by the fact that we can now do very technical commands such as finding the longest words from the English dictionary when we only practiced using DrRacket for less than two months and started off as complete beginners to computer science back in September.
Q: Are there things you initially found hard or intimidating, but now understand? How did you get to that point? 
A: In comparison to beginning September, I can now handle the unique terminology and formatting Racket uses with accuracy and efficiency through lots and lots of practice outside of class. I am also beginning to understand why everything is designed the way it is in DrRacket. Specifically, when we were first introduced to Booleans and the check-expect function, they seem to be rather ''ridiculous" because all the answers are very obvious and can be figured out easily using common sense. But now that we have to do data sorting and construct lengthy, complex functions, they become very useful tools in organizing thoughts. I have come to realization that every property of expressions is no incidence. The short-circuit evaluation nature of Booleans, for instance, is not only time-saving when the same operation has to be performed repeatedly, but also acts to reduce the occurrence of errors greatly; once a part of the function fulfills the conditions needed by the specific Boolean, we arrive at a result directly, without evaluating trailing parts that may lead to errors.
Q: Would you like to ask questions in tutorial, the CSC104 TA office hours, the general CS Help Centre hours, or on Piazza, but have trouble doing so?
A: In terms of getting assistance, I think it is the most effective to get in touch with TAs in person (going office hours and the helping centre) for explanation on self-directed questions, as opposed to waiting for hours to get a response online. With that said, the service offered at the CSC helping centre has lots of room for improvement. Yesterday I went there for assistance, but none of the Teaching Assistants studied CSC104 and understood the language. My question was left unresolved. This makes things inconvenient for us as students because Wednesday afternoons is the only time left for us to reach TAs. And from reading through numerous blogs of fellow students, many of them claim they have trouble working out their schedule to drop in on office hours. The blogger of https://csc104journey.tumblr.com/ even has to give up his/her lunch time to get help. Besides, it can be difficult to keep up with the course materials when concepts are cumulative and questions regarding the fundamental ideas are not addressed until a week later.
0 notes
csc104slog2017-blog · 7 years
Text
Weekly Update-Week of October 16 (Key Topic: Conditionals)
To me, this week marks a pivotal point in the course; we have now completed building the fundamental knowledge needed for playing around with DrRacket and onto the more complicated part of the course material—— building lengthy, generalized functions within functions to perform complex commands. For the first time, I recognized how speedy we are covering the course material and how easy it is to fall behind if lectures are not attended regularly and extra time is not spent after class to think digest what is learned in class.
Specifically, Monday's lecture consolidated our understanding of the short-circuit evaluation nature of booleans and the importance of this property when booleans are used in building conditional statements. And on Friday, we went over in depth of how to pull out small pieces of specific information we need from a long list and what to be mindful of when extracting them. As for the quiz this week, it mainly tested our knowledge upon solving function requiring results from similar function(s)—— base case(s) must be performed before evaluating the desired problem.
0 notes
csc104slog2017-blog · 7 years
Text
Weekly Update- Week of Oct 8th
This week, we didn’t have class on Monday because of Thanksgiving and on Friday we had our very first CSC test. It is now midterm season and work for my other courses is piling up. Besides the regular homework and assessments, I also had another midterm test this Tuesday and a problem set due on Thursday. Consequently, my study plan for the CSC test was held up and I didn’t start until later in the week. Under the time constraint, I decided to start reviewing by getting myself familiar with the test format and what type of questions to expect on it. So I went over some of the past tests posted on the course website first and tried writing out the solutions to each question by hand before double-checking them with DrRacket. And when I was comfortable doing all those, I went back to reviewing my lecture notes and the weekly lab exercises. 
Now that I have finished the test, I find practicing doing the past tests is the most helpful of all studying tools. And comparing to the actual test, the sample tests have little difference in terms of formatting; only the individual questions differ. But at the same time, it is also critical to fully understand the relevant concepts to be able to solve questions on the spot. 
Overall, the duration of the test was sufficient and its level of difficulty was reasonable. As of next time, I will try to get an early start in studying and use the resources available such as office hours more effectively to clear up any confusions I may encounter.
0 notes
csc104slog2017-blog · 7 years
Text
SLOG #1 (Oct.6)
Q: Why did you choose CSC104? What do you hope to get out of the course? 
A: When I was planning the courses to take for my first year during the summer, I wanted to diverse my areas of interest aside from the mandatory courses required by my program of study. I always had an interest in topics relating to computer science and programming and CSC104 was the perfect course for me— a beginner with no prior experience in computer programming. Fundamentally, having some systemic knowledge in computer science is useful in everyday life in general as well as for many different career paths now that our society is becoming more and more technological-oriented.
Besides a decent set of marks, I also want to explore and get a sense of what is going on in the “backstage” of software and websites from the course. I am also hoping to write codes for simple games such as Tic Tac Toe by the end of the term.
Q: What did you expect programming to be like, and how does it compare with your experience in the course so far?
A: Programming using DrRacket has been a completely different experience than my supposition. Before, I always thought of programming as writing very complex codes (communicating with the computer through different arrangements of zero and ones) that professionals who study for years can only understand. Now that I have studied CSC104 for a month, I am surprised to find that the course content we covered so far has been understandable and manageable with sufficient practice inside and outside of class.
Q: What do you find interesting so far? What do you find hard so far? Is the course easier or harder than you expected?
A: Building on what I have said previously, the course has overall been easier than what I expected. Until I started working with DrRacket, I always had the misconception that everything relating to programming is “irreversible”; no mistakes can ever be made and the programmer must get everything right on the very first attempt. Because of this, I was very surprised when I come to recognition after the first couple of lectures that learning computer science is all about testing, failing, and learning from the mistakes made. As Dr. Jacqueline likes to put it, “it never hurts to try. You will never know if something is right or wrong unless you have tried it. And what can possibly happen if you did something wrong? Just an error message to guide you in fixing your mistakes”.
DrRacket’s ability to manipulate images much more quickly than professional graphic software is another thing I find interesting. We can conclude it is undoubtedly a very powerful program just from looking at the fact that seemingly complicated transformations of images can be done within a few lines and evaluated within an instant of time.
In terms of the difficulties, I feel that as the number of functions we learn pile up, it may become more and more difficult to distinguish them from one another and remember their individual properties (effect they bring) and precise use of each. Lack of productivity when computing can also be a potential issue because DrRacket only recognizes inputs in a very restricted manner (lacks humanity), meaning commands will not run properly even with a single formatting error.
Q: How did you study for the quizzes? Are you satisfied with your performance on them; if not, what do you plan to change?
A: In studying and preparing myself for the two quizzes we had so far, I tried to get myself familiar with the idea and concepts we covered in class from the previous week and made sure I was comfortable in doing the lab exercise assigned for that week. As a tip, attending to lectures regularly and going over lecture notes for additional practice also help to consolidate the knowledge needed for quizzes. Overall, I felt confident in applying what was learned in class to different scenarios and figuring out the relatively difficult questions on the two quizzes.
Comparing with the first quiz, I felt the second quiz's level of difficulty jumped to another level. Its focus switched from testing whether students understand the difference between the fundamental elements in DrRacket (ex. functions and strings) and to the actual application of them.
By far, I am satisfied with my quiz results. With that said, I think my review strategies have been working well and I will continue to use them in studying for future evaluations.
Q: Are there any special computer science topics you're interested in?
A: If possible, I am interested in learning more about how websites and games are developed and how to systematically solve complex mathematical problems and sort/analyze data using computing software.
0 notes