# Review: MATH E-304Inquiries into Probability and Statistics

## A brief review of the Harvard Extension School MATH E-304 course

Last fall, I enrolled in an online course for the first time. Well, I’ve worked through, or rather, part-way through, plenty of MOOCs in the past few years. However, this was the first time I’d enrolled (and spent money on) a synchronous, organized online course.

I was looking for a probability and stats class that would help fill a knowledge gap and, ultimately, supply me with understanding that would be needed for understanding NLP (natural language processing) methods in a deep way. After spending many hours searching through class syllabi for courses in the Baltimore area or offered online, I…

# 女性エンジニア

## Women software developers in Japan

This summer I had the amazing opportunity to take a break from my normal life of working in computer languages and spend eight weeks focusing on improving at a natural language, Japanese, at the Middlebury Language Schools in Vermont. The TL;DR synopsis of my summer is that it was probably the best language-learning environment I’ve ever been in, …

# SICP 1.3.4: “Formulating Abstractions with Higher-Order Procedures: Procedures as General Methods”

## (Structure and Interpretation of Computer Programs) 1.3.4

My 1.3.4 exercise solutions are also on Github here: https://github.com/bolducp/SICP/tree/master/exercises/chapter_01/1.3_exercises

The final sub-section (1.3.4) of this section on higher-order procedures (1.3) focuses on the usefulness of not only using procedures as arguments but also as the return value of procedures. We are walked through a transformation of the `sqrt` and `newtons-method` functions from earlier sections that are implemented, instead, using procedures that return other procedures. One of the main advantages illuminated by this comparison is how explicit the code built up from this style of programming becomes.

This section also spends some time explaining the mathematical equations for finding derivatives…

# SICP 1.3.3: “Formulating Abstractions with Higher-Order Procedures: Procedures as Returned Values”

## (Structure and Interpretation of Computer Programs) 1.3.3

My 1.3.3 exercise solutions are also on Github here: https://github.com/bolducp/SICP/tree/master/exercises/chapter_01/1.3_exercises

This section focuses on demonstrating the usefulness of higher-order procedures by means of two specific, detailed examples: 1.) finding roots of an equation f(x) = 0; 2.) finding fixed points of a function.

## “Finding roots of equations by the half-interval method

The half-interval method is a simple but powerful technique for finding roots of an equation f(x)=0f(x)=0 where f is a continuous function.” (pg 67)

The 2-page-long explanation of this method is a concise and well-articulated read, so I won’t try to summarize it here. It demonstrates both the definition of the high-order function and how it can…

# SICP 1.3.2: “Formulating Abstractions with Higher-Order Procedures: Constructing Procedures Using Lambda”

## (Structure and Interpretation of Computer Programs) 1.3.2

My 1.3.2 exercise solutions are also on Github here: https://github.com/bolducp/SICP/tree/master/exercises/chapter_01/1.3_exercises

As the title of this sub-section states, the focus of this material is on explaining the use of `lambda` in writing Scheme procedures. More specifically, this section defines and illuminates the usefulness of lambda functions by drawing upon previous examples where internal named procedures were defined in order only to be immediately invoked once within the body of the primary function definition and shows, instead, how lambda functions can be used to accomplish the same end more concisely and clearly. …

# SICP 1.3.1: “ Formulating Abstractions with Higher-Order Procedures: Procedures as Arguments”

## (Structure and Interpretation of Computer Programs) 1.3.1

My 1.3.1 exercise solutions are also on Github here: https://github.com/bolducp/SICP/tree/master/exercises/chapter_01/1.3_exercises

One of the things we should demand from a powerful programming language is the ability to build abstractions by assigning names to common patterns and then to work in terms of the abstractions directly. (pg. 56)

“Often the same programming pattern will be used with a number of different procedures. To express such patterns as concepts, we will need to construct procedures that can accept procedures as arguments or return procedures as values. Procedures that manipulate procedures are called higher-order procedures. This section shows how higher-order procedures can serve as…

# SICP 1.2: “Procedures and the Processes They Generate”

## (Structure and Interpretation of Computer Programs) 1.2

My 1.2 exercise solutions are also on Github here: https://github.com/bolducp/SICP/tree/master/exercises/chapter_01/1.2_exercises

# Points of Note

Concise explanation of processes and procedures, and the focus of the section:

A procedure is a pattern for the local evolution of a computational process. It specifies how each stage of the process is built upon the previous stage. We would like to be able to make statements about the overall, or global, behavior of a process whose local evolution has been specified by a procedure. This is very difficult to do in general, but we can at least try to describe some typical patterns of process evolution.

In this…

# SICP 1.1: “The Elements of Programming”

## (Structure and Interpretation of Computer Programs) 1.1

My 1.1 exercise solutions are also on Github here: https://github.com/bolducp/SICP/tree/master/exercises/chapter_01/1.1_exercises

I love the title of this first subsection — “The Elements of Programming”. I’m not sure whether the authors intended the reference to Strunk and White’s classic The Elements of Style text, but I believe that their analysis of the primitive elements, methods of combination, and means of abstraction in programming provide an apt parallel for the ways that Strunk and White describe the art of composition.

# Points of Note

Section 1.1 is primarily about how computer languages provide a means for conceptualizing and structuring computer program to enable processes. …

# My SICP (Structure and Interpretation of Computer Programs) Challenge

## 44 Weeks of SICP

When I first began seriously learning to program a year and a half ago, one of the best things I did was to read and work through all of the exercises in Allen B. Downey’s Think Python: How to Think Like a Computer Scientist. In order to keep myself accountable and track my progress later, I kept a blog that I updated almost every day with notes and my answers to all of the exercises. …

# Literary Studies: A Path to Software Development

I’ve been more or less consciously writing pieces of this blog post in the back of my mind for the past year now. A recent SmartLogic company event, Internal Conf (an afternoon dedicated to sharing knowledge on most any self-determined topic, technical or otherwise), finally provided me with the time and motivation to organize these thoughts in a more cohesive manner to present them to my co-workers. Here are some of those thoughts in a slightly different form.

In this blog post I hope to demonstrate that non-traditional paths to programming can provide crucial skills for being a reflective, productive…

## Paige Finkelstein

Follow: @paige_bolduc

Get the Medium app