Skip to content

JA3. Learning Journal Week 3

Statement

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.

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

As usual, I started the week by trying some of the self quizzes which gave me an insight about what to expect. I then read the reading assignments, answered the discussions questions and here I am writing the learning journal. The topic of this week was about Data types.

The topic of data types included binary and data encoding, elementary data types, composite data types, representing real numbers, bindings, scope, static, dynamic, weak, and strong type checking.

2. Describe your reactions to what you did

I enjoyed the video lectures of this week more than the reading assignments as the topics were complex and the videos were more interactive and easier to understand and follow. There was few inconsistencies between the reading assignments and the video lectures, but this is normal knowing the age of both the book and the videos.

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

I did not receive any feedback yet, but I am looking forward to it.

4. Describe your feelings and attitudes

Type systems are such a critical part of the development cycle, where they can facilitate and speed the coding process, reduce bugs, and make the code more readable and maintainable. When it comes to running applications in production, type systems are not that important as runtime environments are different; however, during the compiling process, the type checking does a final pass of linting and checking the code for any errors.

5. Describe what you learned

I learned about binary, asci, Unicode, Overflow, big-endian, little-endian, elementary data types, composite data types, representing real numbers, bindings, scope, static, dynamic, weak, and strong type checking.

A variable information is stored in the symbol table, which is a tuple of name, address, type, value, lifetime, and scope. Dynamic typing allow for late binding where the type of the variable is determined at runtime, while static typing is early binding where the type of the variable is determined at compile time. Strong typing when complier does not allow operations between different types, while weak typing allows operations between different types as automatic type conversion is performed.

6. What surprised me or caused me to wonder?

I was surprised how some languages enforce strong typing around array indexes, which I was always thinking that it is not possible as runtime is different than compile time. The text mentioned Ada as an example of a language that enforces strong typing around array indexes (Ben-Ari, 2006) and compares it C and Jaa.

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

Arrays and Strings are always confusing as I see languages implement them differently; for example, the String is considered primitive in some languages while it is considered a derived or composite type in others, some times it is an array or an objet.

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

I am gaining the understanding of different type systems and how they work; beside the deep understanding of the differences between different data types, and how each one fo these types is handled within the programming language.

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

I am realizing that I like type systems and I can not go back to the old world (javascript) where I used to write code without types checking at all.

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

I hope that I will be able to apply the knowledge about static/dynamic and strong/weak type systems to my work, as I am working with a dynamically typed language (JavaScript) and its superset (Typescript) which was always confused me as the TypeScript compiler never emits any code that relates to typing, and I was always wondering how it works.

11. Describe one important thing that you are thinking about in relation to the activity

I am thinking of creating a type script library for dowing binary operations, like converting from/to a decimal or vice versa and finding the 1s and 2s complement of a binary number, and finally binary addition and subtraction. I already started a little but I’m not sure if I will be able to finish it.

References

  • Ben-Ari, M. (2006). Understanding programming languages. Weizman Institute of Science.