Prof. Development

Prof. Development

Problem Set 0

It’s official, my first Scratch project is live 😊 The first CS50 assignment is intended to practice using algorithmic logic. There are a bunch of requirements but they are pretty broad stroke. I set out without worrying too much about them and figured I could add details later if need be. Little did I know… Tbh, I wasn’t really sure were to start and had no idea what sort of program I wanted to run. Together with the wonderfully supportive women I am working on the course with I explored the different Scratch elements. I found some cute sprites (think: characters) and added them in. My first choice was a penguin and a trampoline, but the scenario didn’t really spark my creativity. Once I found a frog and discovered the backdrops, I wanted the frog’s tongue to extend with the click of the space bar. That naturally led to my first foray into the actual logic composition. With a few costume changes and some drag and drop, I had my first win. Moving the frog around by arrow keys was the next great step. The real struggle came from getting the characters to interact. With some trial and error, and a lot of help and support from a kind new friend, I managed to get the responsive functionality in. I really enjoyed the creative process – since it was an organic build, without any pre-design, I was able to follow the natural “feel”. Each achievement inspired me to the next one. As I created, I discovered lots of little details and fixes that needed to be addressed. For instance, once the game was finished, how did I get it to reset? and then what about at the start of a play, shouldn’t all the characters be in their designated places? This led me to test logic and consider the problems. I even came across one instance where I had a “spelling error” – lesson learned: my custom blocks need clearer defined names. The last bit of fun came with adding instructions so players would know how to engage with the program. I’m pretty sure I didn’t use the prettiest code but I achieved the end result. All together it was a great hands-on learning experience. It’s not the most finessed project but I successfully created my first Scratch program… https://scratch.mit.edu/projects/792309822 And bonus, it passed all the requirements for the assignment!

Prof. Development

Own the Room

In early December, I attended a full-day Own the Room “Communication Essentials” training. The workshop was in-person in New York, with ~20 other people from various industries and positions (and a whole bunch of participants from IBM). The day was full of hands-on examples and interactive learning – the coaches did a great job of making it real, relevant, and actionable. The sessions were organized intro three topics, which seamlessly transitioned into each other. I’ve noted some of my favorite take-aways from each – and included some goodies in the attachments. Executive Presence and Authentic Connections, ie. How to Be Memorable Dynamic Delivery Telling Captivating Stories Personally, I learned that I use too much “body-noise” when presenting, which is very different than “body language’ (intentional) – and speak too fast (generally, but worse in terms of public speaking). If you catch me on either of these (or anything else), please point it out so I can keep working on improving. A final wise word of wisdom – focus on strengths and area of improvement (there are no weaknesses). In short, I found the day to be fun and helpful in building better practices.

Prof. Development

Week 1 – Finally done!

After a long delay – and some procrastination – all of the components for CS50 Week 1 have been submitted! In short: This was a tough one. A brief update on my progress and some things I’ve learnt so far: 1. I miss the Scratch program. Those delightful visual block puzzles made learning fun and allowed me to enjoy the logic behind coding. In contrast, writing in C was learning to speak an overly technical new language – without getting to appreciate the beauty behind it. While working on the exercises I often felt like I was losing the rationale in the weeds. 2. Inertia is a powerful force. This course has definitely been a reminder of this reality. In motion, consistency flows; once stopped, starting is all the harder. 3. Connecting with a virtual group is great, but it can be easily swayed away from its initial purpose. The group of women I started this course with became a wonderful bi-weekly professional support network. Now, as those core members settle into new roles, we’ll need to adapt to better align with evolving participant needs. With that said, I will explore options for better accountability moving forward. 4. Life happens. Balance can be hard to maintain. Having some tasks that are flexible makes it easier to add and subtract from the load as needed. For me, this course is that. On the bright side, I’ve got the generous timeline of nearly a full year to complete all the coursework – and I’m still on track for that! Lesson unlocked: In future, I will lean in to in-person, structured learning. This is definitely not my strongest skill set, but with help I’ll continue to move on to the next lesson.

Prof. Development

Notes from Week 1

It’s CS50, Week 1.  I feel slightly jipped that last week doesn’t count. This is were we begin with Language C. We’re moving into code, no more safe ol’ Scratch to practice my logic. This includes numbers + letters + instructions. Simply put, patterns of 0 + 1 = numbers, letters, and operations. The foundations: Source code is the general term for what programmers write. But computers don’t actually understand this code. They speak in binary – the technical term for the root binary language that runs the computer is “machine code”. Source Code → Compiler Program → Machine Code Intimidating as of now, but hopefully soon to be clear. Writing good code is graded on correctness, design, and style. The CS50 course uses the free text editor, Visual Studio Code. It’s designed to write, format, and run code all in one. VSC in the cloud, is divided and navigated in regions: To build a program type “<name of choice>.c”. in the terminal window. Click back into the terminal window to compile the code. If you type incorrectly, the program will not run. If executing a command results in no errors, you can proceed. In the file explorer (on the left) there is a file “<name of choice>.c”.which can be read by the compiler. This is where the code is stored. The other file, same name but without the extension, is an executable file that can be run, but cannot be read by the compiler. Fun fact: The $ is the standard symbol to let you know you can type commands. Fun fact 2: The program Automatically highlights syntax that it recognizes. Functions. how it all works. Functionally, speaking to the computer in small steps and explaining what you are telling it. In C, the function ‘print’ to display text on the screen.’printf’ is print, but formatted. Some other intro operational jargon: Statements of code are closed with a ;.Pro tip: A common error in C programming is the omission of a semicolon. Variables – Variables can store value. You generally use them to utilize information gathered from input in your output. Conditionals – if / then, ie conditional logic. Loops – repeat x3, again, again, again… Some final bits to tie it all together: Shockingly not all code uses the same dictionary. For this course the library content (or manual pages) is at manual.cs50.io. Comments, interestingly, are a part of computer programming. You can leave short explanatory remarks to yourself and others to explain what your plan is. To do this, add // into your code, followed by the comment. Another fun fact: In coding language, when saying “while true” really means forever. Unless somehow it’s no longer true… This was a tough week. We started simple, “Hello, world” became <hello, world>. Then we got complicated, Mario Bro. style. I’m not looking forward to the problem sets. Full disclaimer: The CS50 notes for this class are great! I pulled bits that were particularly helpful, but the full goodness can be found. https://cs50.harvard.edu/x/2023/notes/1/

Prof. Development

CS50: Algorithmic Thinking

The second half of the first week of CS50 – or rather, week 0 – is dedicated to computer thinking. Now that we can communicate with the computer by turning on and off the switches (or more formally, speaking binary), we need something to say. As stated at the start of this course: problem-solving is central to computer science / programming. The example given ion CS50 is as follows: Try to find a person’s name in a phone book. Your options are: Or… In computer speak, each of these approaches is called an algorithm. All work, but not all are efficient. al¡go¡rithm /ˈalɡəˌriT͟Həm/ noun a process or set of rules to be followed in calculations or other problem-solving operations, especially by a computer. Pseudocode; a human-readable version of code. a.k.a. the building blocks to computer programming The official lexicon goes like this: And now my first assignment: Build (using the lexicon of elements) in Scratch. For those new to it, Scratch is a wonderful resource built by the Lifelong Kindergarten Group at the MIT Media Lab as an educational tool to help children visualize programming. It’s target audience is between ages 8 – 16. And older Lifelong Kindergartens like myself. On the site, Scratchers (i.e. me), can create projects using algorithmic logic. Stay in touch, it’s in development 😉

Prof. Development

CS50: Week 0

To kick-off the year, I’ll be working through CS50: Introduction to Computer Science. CS50 is the largest course on the Harvard campus – and has more than 2,000,000 registered learners worldwide (via edX). It’s not my strong suit to do online courses; so how am I doing this course? In order to keep myself accountable I’ve created a co-working group together with other learners from the Women in Product Facebook group. The goal is to meet twice a week for one hour sessions where we work through the problem sets together. This is my first week 🙂 The first video element was fantastic! I highly recommend watching, even if you aren’t taking the full course. David J. Malan is enthusiastic and clear. They say computational thinking (fancy scary words) is about solving a problem. Computer programming happens in between the input and output. I’d heard about binary before, but the visualizations made it much easier to understand. Computers speak in terms of zeros and ones. How? Computers are a series of transistors (think: switches). If the switch operated a light bulb then 💡 Zero (0) = off.  One (1) = on In this manner you can use 3 light bulbs (bits) to count up to 7. To do this you assume the placements are values as 4 2 1. If you add one more bulb you can count to Standard computers use eight bits, for a max represented count of 255. ASCII [in full: American Standard Code for Information Interchange] is the standard language chart used to map number values to letters to specific characters. Fun fact: because numbers are used to represent information, there are designated numbers to represent numbers too – see below: 0-9 = 48-57. This means, my name in ASCII is: 65 73 68 69 76 Feels like techy version of Morse code. And yes, I looked up my name in Morse: .- .. -.. . .-.. Some other interesting take-aways that tie into the above: From here we enter algorithms.

Prof. Development

2023: The Year Ahead

As an Associate Product Manager, my learning priority for the coming months is to develop my technical knowledge. This will help me to – And then, who knows? “The mind, once stretched by a new idea, never returns to its original dimensions.” – Oliver Wendell Holmes

Scroll to Top