Wednesday 6 December 2017

SLOG #3



End-of-Term Reflection


It’s the end of the semester already, and we’ve just ended our last class. It’s been a great course, the instruction we received in the class and the help we got from the TAs all have helped me gain a lot more understanding towards the subject matter of coding, thank you!


I would recommend this course to my friends who are interested in exploring this subject. And my advice for a student beginning this course would be the following.


Design functions

Designing functions is the core and challenging part of the course, yet I had the most fun doing so. Since often time we expect the function to generate different outputs with regards to different input we have, in order to design a function that works for all conditions, we need to write a few check-expects for both documentation purpose and design purpose. Check-expects are used to record the input and output side-by-side, and after finishing the design of function, we will run the check-expects, if “the test pass” we know the function is doing what we expect them to do, given a specific input. When writing the check-expects, they also help us to think of the possible categories of inputs when running the function. 


There are a lot of functions that already exist in the Dr. Racket “inventory” that makes designing functions possible and a lot easier. When writing the functions, we write the header including the new function’s name, and a parameter which is the place to write the inputs. After the header, we start designing by calling all sorts of functions on the inputs, depend on the properties of inputs, there are some functions that only work on certain things. For example, “rotate” only works on pictures, and “apply” only works with lists of items.


When it comes to the situations where different categories of inputs are expected to produce different sorts of outputs, we use “cond” (stands for condition). We first check if the input meets the first condition, (say, if it’s an even number,) and we might decide to call a specific function on it. But if the input doesn’t meet the first condition, (say, it’s an odd number,) then we might ask the function to do different things with the input.

Prep for class 

Before taking the course, I recommend reading the parts of Dr. Racket’s manual that interest you, it can be numbers, pictures, or animation, because the manual gives very useful demonstration regarding the functions. Future students can also download the software before class, and try some of the simpler functions themselves, getting familiar with the software. And what is amazing about Dr. Racket is that when putting the cursor on the function, and push “f1”, the function’s manual will pop up in the browser, giving useful help with the function.


One of the function that has given me tremendous amount of help throughout the course is “step”, which step through the functions in the interaction area, helping me understand the order and exactly what the functions do to the inputs. Because in the tests, we are often expected to write down the intermediate steps for a specific function, so I recommend prospective students using step, when they first start using the software.

And prospective may wish to watch some crash course, or read some articles on coding and computer science, which will help building the basic understanding of coding.

Before each class, I suggest running what was written down from the previous class, which not only helps with the preparation for tests and  exams, but it also helps with understanding of the new class material, because the materials often link with each other one way or the other.

And after class, I recommend comparing the one's own notes with the instructor's, because even a small typo can prevent the function from running in the right way. And definitely review the materials often, and ask questions if one gets stuck.

More reflection on experience 

After all, the function I found the most difficult was animation “Big-bang”, but once trying several different examples, I slowly understand how it works. So prospective students should not be scared by the intimidating rumor about coding, with enough practice and focus, one can get the hang of it. 

I am more than excited moving forward with the invaluable knowledge and experience I gained from this class. To explore areas of Dr. Racket we haven't learned yet, and to learn new languages, like HTML or java.

Dec.6th 2017

Friday 27 October 2017

SLOG #2



Slog #2 Oct 27th
~~~~~~~~~~~~~~~~
 
It’s surprising that it’s been almost two months since school started📋, we’ve learned quite a few more things that are more complicated, but I found the new functions and skills we learned can be connected to a lot more things that we see on the computer daily, such as the “condition function”. Often time, depend on what we click (either yes or no, allow or not-allow), the computer responds differently by opening new windows, directing to new sites, or just staying in the current page. In the condition function, depend on the input, the computer can produce two outputs.

Something that was quite challenging for the classes is having a “local definition”, which later I tried interpreting it as something that needs two definitions, while one of them can not be defined outside of the function. This function comes to be really helpful for extracting certain elements from a list that satisfies some criteria, especially with list or even documents that have tens of thousands of words in them. One thing I did to overcome the difficulty of understanding this “local definition” was keep trying what I thought would produce the same results. For example, I couldn’t quite understand why both of the functions have to be inside, instead of outside, so I tried moving one of the definition outside, and looked at the error shown to understand them.

What I did to prepare myself for tests involve three aspects: one was having the computer to step over the functions in the practices, which really helped me to understand the order and what each function do; second method I used was creating my own functions base on the examples provided in class and practices; and the third method was writing down some steps in the simplified version, and then check with the interaction section to see if I am correct. Other than these three, I’ve reached out to TAs during office hour and instructor after class, and they’ve all been very helpful and approachable, which I really appreciate!

For the past classes, one picture in particular that was quite magnificent was the Sierpinski triangle, which was something that was even more amusing when we get to draw them by hand. At every level, the shape is composed of many equilateral triangle, this shape resembles such a uniformity and order, that I was really amazed by how much we can do with the some of the simplest function call in the computer.

Overall, the materials have been challenging but really interesting!

Saturday 7 October 2017

SLOG_1

Oct.6th.2017

First Reflection --- Taking CSC104 for One Month   

     1.Why did you choose CSC104?📚

Because we interact with computation every single day of our life, and it has become more and more crucial in the working field, I’d like to learn the basics of it, in order to be more aware and active in the constantly changing era of technology.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2. What do you hope to get out of the course?

I hope to enhance my knowledge of technology and prepare myself for learning other languages in the near future.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3. What did you expect programming to be like. And how does it compare with your experience in the course so far?
Formerly, programming does sound quite intimidating to me.


Before taking the course, I expected programming for beginners with more complex terminology, but it turns out that the quite a few functions used in Dr. Racket are straight-forward, which I really appreciate. But I do expect the functions we will learn to be much more sophisticated and challenging. 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4. What do you find interesting so far?

Defining a new function is one of the most exciting aspects in the curriculum so far, because it allows us to combine what we’ve learned in a logical way, and to produce something in our mind.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5. What do you find hard so far? Is the course easier or harder than you expected?

One of the hardest part, in my opinion, is the placement of bracket sometimes. This might be quite intuitive to many other students, but for “functions” like map and range, I often added bracket in front of the number or second function accidentally. Overall, I think I like the structure of the course, it’s a bit easier than I anticipated.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6. How did you study for the quizzes? Are you satisfied with your performance on them; if not, what do you plan to change?

For quizzes, I do the practices given by the instructors online, which are really relevant and helpful. For concepts that I am not completely familiar with, I just referred back to the class notes and kept trying. I think I am satisfied with my performance on quizzes.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7. Are there any specific CS topics you are interested in?

Web development.

SLOG #3

End-of-Term Reflection It’s the end of the semester already, and we’ve just ended our last class. It’s been a great course, the ins...