Hi @johnsciutto,
I didn’t even know the terms “bottom-up approach” and “event-driven programming”.
The term “bottom-up approach” is from a book of 1999[0], I think that the first time I heard about it was in an interview to Jamie Zawinski[1] or in the documentary “Code Rush”(2000)[2]. So, at least in that period (pre-2000’s) was used.
Is there a course or resource you could recommend to study more about different approaches to creating applications?
I think that this question can have 2 possible answers (general and specific):
In general, I think that the course “How To Design Programs” [3] [4] is a really (really) good introduction to problem solving
. This is a personal opinion, but I think this course is infinitely better than memorizing Computer Science algorithms or solving algorithms(puzzles), because in the beginning is more important to learn how to solve a problem in a systematic way than getting the right answer (an answer that pass all the tests).
The course “Programming Paradigms (CS107)”[5] and the book “Concepts, Techniques, and Models of Computer Programming”[6] are really good for learn the theory behind programming, but you can spend years learning from both and I am not really sure if you will get something that you can use in a ‘real project’. The same goes for SICP[7]
There is a book called “Exercises in Programming Style” I haven’t read it but the github repository[8] seems interesting.
In specific, I think that it will be better to focus in Computer Science papers, “case study”[9], and JS frameworks:
I don’t know if you are interested, but I am currently writing a project that follows the event-state-action and imperative/procedual(?) paradigms using: finite state machines, state-transition tables and diagrams (quite far from functional programming).
An example:
- The state transition table:
*GREEN time YELLOW entry: setstyledomgreen
YELLOW time RED entry: setstyledomyellow
RED time GREEN entry: setstyledomred
- The state machine and diagram:
I also have a youtube channel where I am currently uploading videos of my progress writing the project, my plan is also upload videos with comments about the code (something like a code review) and video tutorials to learn how to use the project.
https://www.youtube.com/playlist?list=PLEJxzxnNnYoXP-eOjedQJbmV7t82hHrTD
Cheers and happy coding 
NOTES:
[0] Constructing the User Interface with Statecharts, Ian Horrocks.
This book provides a practical guide to constructing real user interfaces for real projects. It is primarily written for practising software engineers, but will also be invaluable to students wishing to gain an insight into user interface construction.
[1] Jamie Zawinski - Wikipedia
… is an American computer programmer with contributions to the free software projects Mozilla and XEmacs, and early versions of the Netscape Navigator web browser.
[2] Code Rush - Wikipedia
Code Rush is a 2000 documentary following the lives of a group of Netscape engineers in Silicon Valley. It covers Netscape’s last year as an independent company, from their announcement of the Mozilla open source project until their acquisition by AOL. It particularly focuses on the last-minute rush to make the Mozilla source code ready for release by the deadline of March 31, 1998, and the impact on the engineers’ lives and families as they attempt to save the company from ruin.
[3] 35C3 - How to teach programming to your loved ones
Enabling students over example-driven teaching
Teaching beginners how to program is often hard. We love building programs, and seeing our loved ones struggle with this is painful. Showing them how to copy-paste a few example programs and change a few parameters is easy, but bridging from there to building substantial programs is a different game entirely. This talk is about how to teach programming successfully, through comprehensible design recipes, which anyone can follow, using languages and tools designed for beginners. This approach is probably different from how you learned how to program, or how you’re used to teaching. It is more effective, however, as it teaches more material successfully to a broader spectrum of people. It is also more enjoyable.
The talk is based on many years of research by the Program by Design, DeinProgramm, and Bootstrap educational projects, as well as over 30 years of personal teaching experience in school, university and industrial contexts. A word of warning: The resulting approach is radically different from most teaching approaches used in universities and schools. In particular, it avoids teaching purely through examples and expecting students to develop the skills to arrive at the solutions on their own.
Instead, it eaches explicit methodology that enables students to solve problems of surprising complexity on their own*, whether they are 11 or 55, whether in a classroom, a training facility, or your home. Extensive documentation, material, and software to support this methodology is available for free.
Mike Sperber
[4] How to Design Programs:
How to Design Programs, Second Edition (book)
How to Design Programs, Second Edition
Systematic Programming Design (video course)
https://www.youtube.com/channel/UC7dEjIUwSxSNcW4PqNRQW8w
- The idea is simple, you can write programs in a systematic way:
[5] Programming Paradigms (CS107)
https://www.youtube.com/playlist?list=PL9D558D49CA734A02
[6] Concepts, Techniques, and Models of Computer Programming (By Peter Van Roy and Seif Haridi)
Concepts, Techniques, and Models of Computer Programming
[7] Structure and Interpretation of Computer Programs:
Structure and Interpretation of Computer Programs, Comparison Edition
[8] Exercises in Programming Style
GitHub - crista/exercises-in-programming-style: Comprehensive collection of programming styles using a simple computational task, term frequency
[9] Case study
Case study - Wikipedia
… a case study is a research method involving an up-close, in-depth, and detailed examination of a particular case.