Programming Languages, Part B

University of Washington via Coursera

Go to Course: https://www.coursera.org/learn/programming-languages-part-b

Introduction

**Course Review: Programming Languages, Part B on Coursera** If you are looking to deepen your understanding of programming languages, particularly in functional programming, "Programming Languages, Part B" offered on Coursera is an exceptional choice. This course is part of a three-part series, and it builds on the foundational concepts introduced in Part A, ensuring that you have the essential knowledge required to navigate through this intermediate level. ### Course Overview "Programming Languages, Part B" is primarily focused on enhancing your skills in functional programming while introducing you to important principles that govern a wide range of programming languages. The course utilizes ML, Racket, and Ruby to demonstrate these concepts, but the skills you develop here are universal and applicable across various programming languages, making you a more versatile programmer. ### Syllabus Breakdown The course is structured to guide you through a sequence of modules that gradually build upon each other: 1. **Introduction, Course-Wide Information, and Software Installation**: This section sets the stage for the course, helping you to understand its organization and how to get started with the necessary software installations. 2. **Section 5 and Homework 4 (First Module with Racket)**: Here you will dive into Racket programming, learning idioms related to delayed evaluation. This section is both engaging and informative, encouraging experimentation with a new language. 3. **Section 6 and Homework 5 (Second Module with Racket)**: This module emphasizes building data structures in dynamically typed languages and implementing programming languages using interpreters. The highlight is a programming assignment centered around creating a small programming language that incorporates function closures, providing a hands-on experience that solidifies your understanding. 4. **Section 7 Including a Quiz**: The final module requires you to harness your experience from ML and Racket to compare static versus dynamic typing—a vital aspect of programming language study. This comparative analysis not only enhances your theoretical knowledge but also improves your practical programming skills. The concluding quiz and wrap-up session effectively consolidate your learning. ### Strengths of the Course 1. **Conceptual Depth**: The course excels in elucidating the fundamental concepts that underpin many programming languages, such as type systems and data structures. It helps in bridging the gap between theoretical knowledge and practical application. 2. **Hands-On Experience**: The programming assignments are well-designed to provide practical experience, emphasizing real-world applications. The implementation of a small programming language was a particularly rewarding exercise that enhanced my coding skills and understanding of language mechanics. 3. **Robust Support**: The course offers ample support through instructional videos, discussion forums, and peer interactions, making it easier to clarify doubts and enhance learning. ### Recommendations I highly recommend "Programming Languages, Part B" for individuals who have successfully completed Part A and are eager to delve into functional programming and language theory. Whether you are a computer science student, a software developer looking to sharpen your skills, or an avid learner seeking to broaden your programming knowledge, this course will certainly elevate your understanding and application of programming languages. In conclusion, if you're ready to take your programming skills to the next level, don't hesitate to enroll in "Programming Languages, Part B" on Coursera. The course not only prepares you for Part C but also equips you with essential skills that will serve you well in your programming journey. Happy coding!

Syllabus

Introduction, Course-Wide Information, and Software Installation (Start Here)

Welcome! Start here! Learn about this course and how it's organized.

Section 5 and Homework 4 (First Module with Racket)

Let's get started programming with Racket and then learning idioms related to delaying evaluation. The welcome message has a few additional comments about picking up a new language and how to approach the homework assignment, so let's get started...

Section 6 and Homework 5 (Second Module with Racket)

Welcome to the second week of Part B where we will focus on (a) building data structures in dynamically typed languages and (b) implementing programming languages with interpreters. Most of the programming assignment is focused on (b) -- implementing a small programming language that has function closures. As usual, start with the welcome message and enjoy!

Section 7 Including a Quiz

In the last module of Part B we will use our experience programming in ML and Racket to compare and contrast static typing and dynamic typing. This is not only the most important difference between these two languages, but it is a fundamental topic in the study of programming languages. Learning it can help you program more effectively in both kinds of languages. After completing this week's quiz, don't forget to watch the Part B Wrap-Up and Part C Preview video.

Overview

[As described below, this is Part B of a 3-part course. Participants should complete Part A first -- Part B "dives right in" and refers often to material from Part A.] This course is an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming. The course uses the languages ML, Racket, and Ruby as vehicles for teaching the concepts, but the real intent is to teach enough about how any language “fits together” to make you more effective progra

Skills

Racket (Programming Language) Programming Language Concepts Type System Functional Programming

Reviews

It's challenging as much as it is rewarding, and the peer review is a very nice arrangement for people to see how others are doing things!

A strong follow-up to Part A. The second week's homework assignment is quite difficult, but very rewarding. This course has greatly helped shape my views on programming.

Great course! I learned the Racket programming language and functional programming in general. I recommend it to everyone interested in programming. Assignments are interesting and fun.

amazing course. So many good things I don't know where to start. The whole series (a-b-c) is a joy to study. In particular the section on streams and infinite list is very fascinating.

The course is really fantastic! It leads me to the world of Racket programming and guides me to many concepts in programming language theory (PLT).