#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Options

# How to keep the course going?

edited January 2020

I'm starting this as a free-form chat/strategy discussion, for ideas about how to the momentum going, even after the course at MIT ends this month.

I think we're at a crossroad - with some more fermentation and activity, we could build and go forward. There is a lot more content in the lectures than we have touched upon in the lectures - we've only scratched the surface of functional programming here! Without this, however, and with the course at MIT ending soon, we could easily get into a cycle of reduced activity, reduced readership, and a hibernation until next January.

Please chime in with any ideas (even half-baked) you might have here.

And we can also think more broadly, beyond this particular course, about how to use the forum as a place to think about and teach category theory and other math.

• Options
1.
edited January 2020

We could continue with the idea that @KenWebb started, with a discussion for each of the video lecture.

I'm picturing a format that is closely tied to the video itself. Something like "video notes." The idea would be to carefully watch the video, and take notes yourself on the points that are made, and any questions that come up as you are watching them. Later, post selected notes and questions to the discussion. As a long term goal, the discussion could become complete enough to state all the key points in the lecture. With discussion on that thread, and digging into the ideas, a forum version of the lecture could be developed.

Comment Source:We could continue with the idea that @KenWebb started, with a discussion for each of the video lecture. I'm picturing a format that is closely tied to the video itself. Something like "video notes." The idea would be to carefully watch the video, and take notes yourself on the points that are made, and any questions that come up as you are watching them. Later, post selected notes and questions to the discussion. As a long term goal, the discussion could become complete enough to state all the key points in the lecture. With discussion on that thread, and digging into the ideas, a forum version of the lecture could be developed.
• Options
2.
edited January 2020

@JakeGillberg organized a zoom study group. He said it went well. This is a promising line of activity.

Comment Source:@JakeGillberg organized a zoom study group. He said it went well. This is a promising line of activity.
• Options
3.
edited January 2020

People could create "forum talks" like mini-blog articles explaining something here. It wouldn't have be a full-blown lecture. Incompleteness can work be fine hear, as things that are started by one person can be continued by another.

Comment Source:People could create "forum talks" like mini-blog articles explaining something here. It wouldn't have be a full-blown lecture. Incompleteness can work be fine hear, as things that are started by one person can be continued by another.
• Options
4.

re: @DavidTanzer How to keep the course going?

I am thinking about the way forward, both personally and with this course, and am writing this to help tease out my somewhat vague ideas.

I'm a software developer and have felt for some time that Category Theory (CT) offers many useful concepts. I've made several attempts to learn more, and I have made progress, but I always come up with too many questions. It's difficult to break out of my programmer intuitions. I've done software development for 40 years, but have no formal Math background. My languages and programming paradigms have included: Assembly language, unstructured Basic, C and other block-structured languages, object-oriented languages especially C++ and Java, JavaScript, Scheme, Prolog, etc.

This MIT course seems to offer something I've been missing - a programming language that can help answer some Math questions. Learning Haskell could help bridge the gap between Math and software development. So I've started working through a separate online book on Haskell, and will then come back to the MIT course. My hope is to see correspondances between Haskell and Category Theory, and when I have a question, at least in part, then I can let the Haskell compiler (the ultimate ground truth?) give me an answer. This idea feels very tentative.

Haskell is something I know I can learn. From my experience of learning and using other programming languages, I know that I can learn to think in Haskell, and to visualize how to do things in this new language and new paradigm. This will take time. I will need to struggle with the new language.

So my real question is: with Haskell in hand, will I be able to use this new tool to give me a more inutitive understanding of Math and especially Category Theory? Will I then be able to take concepts from CT, and apply them to building real-world computer systems, using Haskell and other programming languages? Will I be able to think in Math and CT? Will I be able to take someone else's real-world problem, visualize possible solutions based on using these new tools, and explain these to someone else? Can a person really learn CT through programming languages, in place of taking years of math courses? And what does it mean to "know" CT?

Haskell could act as a kind of morphism/arrow between two states:

haskell :: State -> State
haskell: "I am an experienced software developer" ->
"I am an experienced software developer who can confidently understand and apply concepts from CT and other areas of Math"


So for me, and this is just an intuition, going forward means learning Haskell, learning to think in a functional programming way, and then using these insights as a better gateway into Math and CT.

If I develop good Haskell functional coding skills, and use the compiler effectively to check what I'm doing, will I then be in some way "automatically" ready to assimilate Math/CT?

What do other people think about this? What are some good ways to get answers to questions? To what extent can we trust the Haskell compiler to verify assumptions? Maybe the MIT course has gotten into some of this, and I just haven't reached those discussions yet. I'm behind in my video watching. Can Haskell and CT be considered as examples of the same programming paradigm, or are they only rough analogs of each other?

One specific approach going forward that I might use (and maybe other people as well) would be to write out some of the many questions I have had, perhaps in this forum. I could then try to find answers in the course materials and videos, and write these in my own words. And maybe other people could come forward and provide their own insights tailored to the specific questions.

Learn You a Haskell for Great Good! - A Beginner's Guide by Miran Lipovača

There are lots of other good resources too.

Comment Source:re: @DavidTanzer **How to keep the course going?** I am thinking about the way forward, both personally and with this course, and am writing this to help tease out my somewhat vague ideas. I'm a software developer and have felt for some time that Category Theory (CT) offers many useful concepts. I've made several attempts to learn more, and I have made progress, but I always come up with too many questions. It's difficult to break out of my programmer intuitions. I've done software development for 40 years, but have no formal Math background. My languages and programming paradigms have included: Assembly language, unstructured Basic, C and other block-structured languages, object-oriented languages especially C++ and Java, JavaScript, Scheme, Prolog, etc. This MIT course seems to offer something I've been missing - a programming language that can help answer some Math questions. Learning Haskell could help bridge the gap between Math and software development. So I've started working through a separate online book on Haskell, and will then come back to the MIT course. My hope is to see correspondances between Haskell and Category Theory, and when I have a question, at least in part, then I can let the Haskell compiler (the ultimate ground truth?) give me an answer. This idea feels very tentative. Haskell is something I know I can learn. From my experience of learning and using other programming languages, I know that I can learn to think in Haskell, and to visualize how to do things in this new language and new paradigm. This will take time. I will need to struggle with the new language. So my real question is: with Haskell in hand, will I be able to use this new tool to give me a more inutitive understanding of Math and especially Category Theory? Will I then be able to take concepts from CT, and apply them to building real-world computer systems, using Haskell and other programming languages? Will I be able to think in Math and CT? Will I be able to take someone else's real-world problem, visualize possible solutions based on using these new tools, and explain these to someone else? Can a person really learn CT through programming languages, in place of taking years of math courses? And what does it mean to "know" CT? Haskell could act as a kind of morphism/arrow between two states: ~~~ haskell :: State -> State haskell: "I am an experienced software developer" -> "I am an experienced software developer who can confidently understand and apply concepts from CT and other areas of Math" ~~~ So for me, and this is just an intuition, going forward means learning Haskell, learning to think in a functional programming way, and then using these insights as a better gateway into Math and CT. If I develop good Haskell functional coding skills, and use the compiler effectively to check what I'm doing, will I then be in some way "automatically" ready to assimilate Math/CT? What do other people think about this? What are some good ways to get answers to questions? To what extent can we trust the Haskell compiler to verify assumptions? Maybe the MIT course has gotten into some of this, and I just haven't reached those discussions yet. I'm behind in my video watching. Can Haskell and CT be considered as examples of the same programming paradigm, or are they only rough analogs of each other? One specific approach going forward that I might use (and maybe other people as well) would be to write out some of the many questions I have had, perhaps in this forum. I could then try to find answers in the course materials and videos, and write these in my own words. And maybe other people could come forward and provide their own insights tailored to the specific questions. The online Haskell book is: http://learnyouahaskell.com/ Learn You a Haskell for Great Good! - A Beginner's Guide by Miran Lipovača There are lots of other good resources too. 
• Options
5.

Do other people also learn best by examples? In the first part of lecture 8, Bartosz presents a simple example based very loosely on vertebrate anatomy. It could be a good exercise to develop this example into a more complete Haskell program, while keeping an eye on the tie-in to Category Theory. When learning a new programming language, in this case both Haskell and Category Theory, I learn best by struggling with a good example. In this case, it would be great to have knowledgeable people available to suggest and critique, similar to what you would expect if you registered for a week-long in-person course that included an in-depth all-day exercise. Maybe start the exercise with several Haskell lists, one for the blueprint and one for each of the models (human and dog)? And then what?

Comment Source:Do other people also **learn best by examples?** In the first part of lecture 8, Bartosz presents a simple example based very loosely on vertebrate anatomy. It could be a good exercise to develop this example into a more complete Haskell program, while keeping an eye on the tie-in to Category Theory. When learning a new programming language, in this case both Haskell and Category Theory, I learn best by struggling with a good example. In this case, it would be great to have knowledgeable people available to suggest and critique, similar to what you would expect if you registered for a week-long in-person course that included an in-depth all-day exercise. Maybe start the exercise with several Haskell lists, one for the blueprint and one for each of the models (human and dog)? And then what?
• Options
6.

@KenWebb Ken you raise a lot of points worth thinking about.

In the first part of lecture 8, Bartosz presents a simple example based very loosely on vertebrate anatomy. It could be a good exercise to develop this example into a more complete Haskell program, while keeping an eye on the tie-in to Category Theory.

Very interesting! I hadn't gotten to lecture 8. Can you post any notes on this lecture, especially about this example, to a Lecture 8 discussion? We can all work together incrementally on posting such notes, even one note about the vertebrate anatomy would be a contribution. Thanks!

Comment Source:@KenWebb Ken you raise a lot of points worth thinking about. > In the first part of lecture 8, Bartosz presents a simple example based very loosely on vertebrate anatomy. It could be a good exercise to develop this example into a more complete Haskell program, while keeping an eye on the tie-in to Category Theory. Very interesting! I hadn't gotten to lecture 8. Can you post any notes on this lecture, especially about this example, to a Lecture 8 discussion? We can all work together incrementally on posting such notes, even one note about the vertebrate anatomy would be a contribution. Thanks! 
• Options
7.

Do other people also learn best by examples? In the first part of lecture 8, Bartosz presents a simple example based very loosely on vertebrate anatomy.

I do (and I guess many people do as well). What I do for these classes is trying to implement the presented concepts in Haskell and coming up with some different examples of applications. For example, I have used F-Algebra for different things such as a random expression tree generator, N-Queens solver, etc.

Maybe we could set up a shared Github repo where we could share our codes corresponding to each lecture. Bring concrete example to the abstract concepts :)

Comment Source:> Do other people also learn best by examples? In the first part of lecture 8, Bartosz presents a simple example based very loosely on vertebrate anatomy. I do (and I guess many people do as well). What I do for these classes is trying to implement the presented concepts in Haskell and coming up with some different examples of applications. For example, I have used F-Algebra for different things such as a random expression tree generator, N-Queens solver, etc. Maybe we could set up a shared Github repo where we could share our codes corresponding to each lecture. Bring concrete example to the abstract concepts :) 
• Options
8.

@DavidTanzer Have started Programming with Categories - Lecture 8 Discussion .

@FabricioOlivetti Good idea about having a repo. I would suggest starting out here on the azimuthproject site to keep everything in one place for now, and as simple as possible. What do other people think? Is there already a azimuthproject presence at github?

Comment Source:@DavidTanzer Have started _Programming with Categories - Lecture 8 Discussion_ . @FabricioOlivetti Good idea about having a repo. I would suggest starting out here on the azimuthproject site to keep everything in one place for now, and as simple as possible. What do other people think? Is there already a azimuthproject presence at github?
• Options
9.

Yes, good idea. Let's use the repository https://github.com/azimuth-project. Let's put our work into a new folder called forum.

I'm not sure about the permissioning, as I haven't been involved in it. And I believe that the developers who created it are no longer active here.

Can someone try to commit there, and see if it works? Otherwise I could ask around for access credentials.

Comment Source:Yes, good idea. Let's use the repository https://github.com/azimuth-project. Let's put our work into a new folder called forum. I'm not sure about the permissioning, as I haven't been involved in it. And I believe that the developers who created it are no longer active here. Can someone try to commit there, and see if it works? Otherwise I could ask around for access credentials. 
• Options
10.

I'm an admin for azimuth-project github repo. If anybody wants to add code I can add them as contributors if they have a github account and post a request with their github username on this thread.

Comment Source:I'm an admin for azimuth-project github repo. If anybody wants to add code I can add them as contributors if they have a github account and post a request with their github username on this thread. 
• Options
11.

@Jim If you have time to make repository called "forum", can you add me? My github handle is xcthulhu

Comment Source:@Jim If you have time to make repository called "forum", can you add me? My github handle is xcthulhu
• Options
12.

@MatthewDoty Sorry I only just read your comment. I think I added you to the Azimuth github organisation as an owner so you can create any repos you like. If not just ping me here. FI. I don't think github supports nested repos so the whole site has a flat structure.

Comment Source:@MatthewDoty Sorry I only just read your comment. I think I added you to the Azimuth github organisation as an owner so you can create any repos you like. If not just ping me here. FI. I don't think github supports nested repos so the whole site has a flat structure.
• Options
13.
edited February 2020

Hi, I just wanted to check in, and say that I'm glad that we still have a band of people who are chipping away at the material, and keeping the discussions going! It's not like the buzz during the course, but think of it as keeping the tree going until springtime.

In the background I'm working on organizing the curriculum materials and categories, so that when the next class starts, we'll have more of a structure in place.

Also, after getting a bit more organized, I'm thinking of seeking other instructors who might want to use the forum to host their class discussions.

Keep this in mind, as a kind of paradigm. We, as the band of people who are continuing the forum, can also reach out to others who might be interested in the forum.

That's why I'm particularly interested in consolidating and updating the current Azimuth project page. It will help to have a "pamphlet" that reflects where we are today, rather than where Azimuth was a number of years ago.

Thanks everybody - keep doing!

Comment Source:Hi, I just wanted to check in, and say that I'm glad that we still have a band of people who are chipping away at the material, and keeping the discussions going! It's not like the buzz during the course, but think of it as keeping the tree going until springtime. In the background I'm working on organizing the curriculum materials and categories, so that when the next class starts, we'll have more of a structure in place. Also, after getting a bit more organized, I'm thinking of seeking other instructors who might want to use the forum to host their class discussions. Keep this in mind, as a kind of paradigm. We, as the band of people who are continuing the forum, can also _reach out_ to others who might be interested in the forum. That's why I'm particularly interested in consolidating and updating the current Azimuth project page. It will help to have a "pamphlet" that reflects where we are today, rather than where Azimuth was a number of years ago. Thanks everybody - keep doing!