All Projects → sjsyrek → Haskell Study Startup

sjsyrek / Haskell Study Startup

Launch your own Haskell study group. Now.

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to Haskell Study Startup

Uexam Mysql
学之思在线考试系统,支持多种题型:选择题、多选题、判断题、填空题、解答题以及数学公式,包含PC端、小程序端,扩展性强,部署方便、界面设计友好、代码结构清晰
Stars: ✭ 124 (-53.9%)
Mutual labels:  education, study
Uexam
学之思在线考试系统,支持多种题型:选择题、多选题、判断题、填空题、解答题以及数学公式,包含PC端、小程序端,扩展性强,部署方便、界面设计友好、代码结构清晰
Stars: ✭ 473 (+75.84%)
Mutual labels:  education, study
Free Courses
A collection of free courses about programming 📖
Stars: ✭ 281 (+4.46%)
Mutual labels:  education, study
Elm Cheat Sheet
An overview of Elm syntax and features
Stars: ✭ 928 (+244.98%)
Mutual labels:  education, functional-programming
Codeworld
Educational computer programming environment using Haskell
Stars: ✭ 1,142 (+324.54%)
Mutual labels:  education, functional-programming
Hamexam
这是一个帮助业余无线电技术能力认证考试的软件,用来背题。
Stars: ✭ 25 (-90.71%)
Mutual labels:  education, study
Pointfreeco
🎬 The source for www.pointfree.co, a video series on functional programming and the Swift programming language.
Stars: ✭ 782 (+190.71%)
Mutual labels:  education, functional-programming
Pointless
Pointless: a scripting language for learning and fun
Stars: ✭ 116 (-56.88%)
Mutual labels:  education, functional-programming
Functional Light Js
Pragmatic, balanced FP in JavaScript. @FLJSBook on twitter.
Stars: ✭ 14,764 (+5388.48%)
Mutual labels:  education, functional-programming
First-Hacktoberfest2021-Contribution
bhavesh1129-first-hacktoberfest2021-contribution.netlify.app/
Stars: ✭ 16 (-94.05%)
Mutual labels:  education
Kotlinjetpackinaction
🔥🔥 Kotlin Jetpack zero to hero. 新手到高手
Stars: ✭ 264 (-1.86%)
Mutual labels:  functional-programming
playlist-quarantine-edition
Playlist Quarantine Edition
Stars: ✭ 20 (-92.57%)
Mutual labels:  education
reactathon2017
Information and resources for Reactathon SF 2017
Stars: ✭ 16 (-94.05%)
Mutual labels:  education
Pfps Shopping Cart
🛒 The Shopping Cart application developed in the book "Practical FP in Scala: A hands-on approach"
Stars: ✭ 262 (-2.6%)
Mutual labels:  functional-programming
jitsi-box
A Raspberry Pi based box to automate holding hybrid conferences with Jitsi
Stars: ✭ 15 (-94.42%)
Mutual labels:  education
Sihl
A modular functional web framework
Stars: ✭ 267 (-0.74%)
Mutual labels:  functional-programming
schulcloud-server
HPI Schul-Cloud Core Server
Stars: ✭ 50 (-81.41%)
Mutual labels:  education
algorithmic-awareness
Home for the IMLS Grant RE-72-17-0103-17 - “RE:Search” - Unpacking the Algorithms That Shape Our UX. Deliverables include a teaching curriculum, syllabi for a week-long workshop and semester-length course, an action handbook for teaching algorithmic awareness concepts, and a software prototype that demonstrates algorithms in action.
Stars: ✭ 25 (-90.71%)
Mutual labels:  education
Foxford courses
Шапка треда, посвященного курсам Фоксфорда и не только.
Stars: ✭ 268 (-0.37%)
Mutual labels:  education
Zio Prelude
A lightweight, distinctly Scala take on functional abstractions, with tight ZIO integration
Stars: ✭ 267 (-0.74%)
Mutual labels:  functional-programming

Haskell Study Startup

Please help me localize this repo!

Launch your own Haskell study group

Learning Haskell is a good idea, but you don't have to do it alone. The book Haskell Programming from First Principles by Chris Allen and Julie Moronuki provides the perfect curriculum for group study. Having started my own study groups to work through this book, I can attest to the efficacy of doing so: it keeps you motivated, it keeps you on track, and it keeps you honest. You may be able to join an existing group, but it's arguably better to start your own, even if you don't feel qualified. I knew practically nothing about Haskell or functional programming when I started my first group in New York City. In fact, I think that's the best possible situation to be in—your learning isn't impeded or your judgment clouded by past experience or irrelevant expectations, and you're able to learn along with fellow novices. You're all in it together! After all, most Haskell developers—we hope—haven't even been born yet. Start learning today, and you'll still be part of the vanguard.

Using this repo

This repo brings together a number of resources for people who would like to start their own Haskell study groups but aren't sure how to do it. Included here is advice for publicizing your group, guidelines for participants, a recommended schedule, and other resources. If you like what you see, here's what I think you should do:

  • If you're starting your own study group, fork this repo and modify it for your own purposes. If you do so, I only ask that you respect the spirit in which this material is offered and not attribute to me any substantial changes to the pedagogy or process.
  • Add a link to your study group to the list below, and submit a pull request to this repo to make it public. Only ask to be added if you intend to (more or less) follow my recommendations.
  • In your own repo, I suggest you make the guidelines.md file your README.md instead, making whatever changes are necessary. You may also link back to this repo if you like.
  • Some additional resources are included with this repo. Use them. Add more. Expect me to add more over time—maybe.

Haskell Book

Haskell Programming from First Principles, colloquially known as the Haskell Book, is the foundation of the course of study proposed by this repo. Do not expect to find adequate alternatives. The authors have provided discount codes in the past to members of study groups, as indicated by the provided guidelines. I cannot, however, personally guarantee discounts myself. Please contact the authors and ask them directly—before you announce the offer to your group.

Starting a Haskell study group

First steps

You can do it entirely on your own, but I have found Meetup to be a worthwhile venue due to its built-in network effects. Developers and the tech-minded seem to be overrepresented there to begin with, and your group will be announced to anyone who has previously professed a similar interest. If your city or region has its own Haskell Users Group or other even tangentially-related Meetup group, you should ask them to make you an Event Host so you can schedule meetings yourself and not have to pay to start a Meetup yourself. You may or may not receive useful support from the local community, so I wouldn't necessarily count on it. But it doesn't hurt to reach out to any Haskell people in your area and to go in person to various programming-related meetups (Haskell or otherwise) to announce that you're starting a study group. The personal touch still counts for a great deal.

Getting the word out

Once you're committed to starting a group, you need to find members. Trust me, they're out there, waiting for someone with more initiative (that's you) to find them. I recommend casting a wide net. Obviously, you should announce your intentions to the larger Haskell and functional programming communities. But it's also a good idea to reach out to both mainstream developers, who may have an interest in FP, and even non-developers, who may want to explore a new interest or career path. As for the former options, my recommendations are below. For the latter, you'll have to try personal persuasion, rely on word of mouth, and otherwise use your own imagination.

Location

This is the hard part—finding a physical space to meet. While you could do it at a cafe (or during the off hours in a Whole Foods eating area, which are generally capacious), it's much better to have a private space. A white board and a projector are ideal amenities. Ask prospective members, especially the developers, to inquire at their workplaces. Contact local tech companies. If they already support Haskell or other functional languages, they may be more interested. Or surf around on Meetup to learn where other groups go. I suggest that you have a backup space, if possible, in case your primary location becomes suddenly unavailable.

Schedule

Once you have found a space to meet, you can design a repeatable info page for Meetup (if you're using it) and settle on a schedule. I recommend that you meet at least weekly if you're going to make meaningful progress. Here's an example Meetup page from my own study group in New York.

Pedagogy and Curriculum

This repo contains a separate set of generic guidelines, including a recommended 12-week curriculum covering the first 18 chapters of the Haskell Book, which you may use for your own study group. I highly recommend you simply implement these guidelines as they are and resist the temptation to "soften them up." This way works. Of course, you should add any details particular to your circumstances. For example, your own Meetup page and/or Slack channels.

Whether or not you want to stretch out the curriculum is up to you. The first time I ran a study group, we did the entire book, one chapter a week (one of the longer chapters we split over two weeks). I no longer recommend that approach, as it's hard to get people to commit to weekly meetings for over 30 consecutive weeks. I suggest you start with 12 weeks or however many you feel is appropriate to cover the first 18 chapters of the book, which takes you up through monad. That covers the beginner level material. If there is interest in continuing the study group, you can go ahead and cover the subsequent, intermediate material. It's also perfectly reasonable to expect participants to have gained enough competence and discipline to cover this material on their own.

In addition to the advice and resources contained in this repo, I have previously written about the pedagogy appropriate for this sort of study group on Medium:

Your first meeting

You are likely to attract a large number of people to the first meeting. Most of them will be tourists. In general, you can expect more people to RSVP to all meetings than actually show up. And you can expect a certain rate of attrition over time. For the first meeting, however, do your best to explain the purpose of the study group and how you intend to conduct it. You can field questions if you like, but I wouldn't entertain unsolicited advice, general questions about Haskell, or demands to defend FP in practice.

As quickly as possible, move into the exercises. Since it's the first meeting, a general presentation on lambda calculus could be useful to break the ice, but I'd recommend just doing a quick intro and meet and greet and then divide everyone up into mini-groups to go over their homework, unless you have a very small turnout. You can go over the answers collectively after everyone has had a chance to share their work. It's important to establish group norms at the outset.

Subsequent meetings

More or less, do what you did the first week but without the meet and greet. Newcomers will have to catch up on their own, as you can't constantly be assimilating people who couldn't attend from the beginning. In other words, don't be a martyr, but do invite them to take their own initiative to reach out to their peers outside regular meeting times to cover the work they missed. I have found it useful, when going over exercises collectively, to ask everyone to put their computers away and do them over again on the fly. The repetition is salutary and it also engenders group solidarity. Those who did their homework will still struggle a bit to remember their solutions while those who didn't will quickly come to see the error of their ways.

You may optionally prepare a skeleton code file to fill in during the meeting. This is where a projector comes in handy. The InstanceSigs GHC extension is especially useful for this purpose. As usual, you should evenly divide your screen real estate between the PDF of the Haskell Book and your REPL and/or code file. Make sure you give everyone a chance to contribute in your meetings, including (perhaps especially) the reluctant, lest a few dominant personalities start to take over. Be patient. Be supportive. Have fun. Go out for a snack or a drink afterward. Carry on.

Teaching and participant conduct

Teaching is something that you may or may not get better at with practice. For most study group coordinators, your best bet is to assume the literal role of coordinator and not try to teach (that is, lecture). You'll have enough to do just making sure your meetings run smoothly. For smaller-scale interactions, try to listen and meet learners on their own terms. Chris Done has written an interesting blog post on the subject. I'm not completely convinced of the efficacy of the Socratic method, but I certainly agree that it's counter-productive to give away the answers to tough problems.

You should probably decide on some behavioral guidelines for your group beforehand, so participants have at least tacitly agreed to be kind and cooperative. The Recurse Center's social rules are a good place to start. If you feel the need to extend my own rather vague formulations, then do so. But never let rules prevent you from enforcing decorum or, conversely, compel you to act against your better judgment.

Paying it forward

Once your study group has wrapped up, what next? You can certainly move on to intermediate or advanced material. Better yet, you can start over again from the beginning. This community needs more people, and there will always be demand for beginner-friendly study groups. If your experience is anything like mine, you'll have had many people find out about your study group too late to join. If you don't want to do it again yourself, an even better solution is to appoint a successful "graduate" of your first study group to run the second one. And so on, and so on. It's the least they can do to repay all your hard work as an organizer, right?

Find an existing study group

The following list of study groups have adopted or adapted the format and guidelines proposed in this repo. Any group may submit a pull request to be added to the list. A listing here does not constitute an endorsement.

Europe

North America

Resources and references for learning

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].