https://github.com/djeada/parallel-and-concurrent-programming
Concurrent and parallel programming might seem complex, but this guide simplifies it. Learn about sequential vs non-sequential programming, processes, and threads. Explore examples in popular languages like C++, Python, and JavaScript to apply your new knowledge to your projects.
https://github.com/djeada/parallel-and-concurrent-programming
async concurrency mpi multiprocessing multithreading parallel parallelism
Last synced: 9 months ago
JSON representation
Concurrent and parallel programming might seem complex, but this guide simplifies it. Learn about sequential vs non-sequential programming, processes, and threads. Explore examples in popular languages like C++, Python, and JavaScript to apply your new knowledge to your projects.
- Host: GitHub
- URL: https://github.com/djeada/parallel-and-concurrent-programming
- Owner: djeada
- License: mit
- Created: 2020-03-24T09:46:26.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2025-02-22T21:13:33.000Z (10 months ago)
- Last Synced: 2025-04-13T04:08:41.442Z (9 months ago)
- Topics: async, concurrency, mpi, multiprocessing, multithreading, parallel, parallelism
- Language: C++
- Homepage: https://adamdjellouli.com/articles/parallel_and_concurrent_programming
- Size: 1.03 MB
- Stars: 11
- Watchers: 5
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Parallel and Concurrent Programming
Concurrent and parallel programming are powerful techniques that can enhance the performance and responsiveness of your applications. This guide demystifies these concepts, covering the differences between sequential and non-sequential programming, as well as the fundamentals of processes and threads. You'll find practical examples in popular languages like C++, Python, and JavaScript, enabling you to apply your new knowledge effectively to your projects.

## Notes
| No. | Description | Markdown |
| --- | ------------------------------------------------------------------- | ------------------------------------------------------------------- |
| 1 | Basic terminology for parallel and concurrent programming concepts |
|
| 2 | Covers the basics of multithreading, including how to create and manage threads, synchronization, and thread safety. |
|
| 3 | Introduces multiprocessing and covers the creation and management of processes, inter-process communication, and synchronization. |
|
| 4 | Covers the basics of asynchronous programming, including async/await syntax and asyncio library in Python. |
|
| 5 | Introduces Message Passing Interface (MPI), a standard for message-passing used in parallel computing. Covers its architecture, implementation, and basic concepts. |
|
| 6 | Covers the hardware components and architectures used in parallel computing, including shared-memory and distributed-memory systems, clusters, and GPUs. |
|
## References
- [Operating Systems Overview](https://www.personal.kent.edu/~rmuhamma/OpSystems/os.html)
- [The Art of Computer Programming](https://www.oreilly.com/library/view/the-art-of/9780596802424/)
- [Raymond's Keynote at PyBay 2017](https://pybay.com/site_media/slides/raymond2017-keynote/index.html)
- [Cornell CS100 Lecture 17](https://courses.cs.cornell.edu/cs100/1999su/lectures/lecture17/sld003.htm)
- [UC Berkeley CS152 Lectures](https://inst.eecs.berkeley.edu/~cs152/fa16/lectures/)
- [Princeton Parallel Programming Bootcamp](https://princetonuniversity.github.io/PUbootcamp/sessions/parallel-programming/)
- [OpenCSF Book on Concurrent Systems](https://w3.cs.jmu.edu/kirkpams/OpenCSF/Books/csf/html/)
- [Understanding Asyncio](https://lucumr.pocoo.org/2016/10/30/i-dont-understand-asyncio/)
- [Node.js API Documentation](https://www.cs.unb.ca/~bremner/teaching/cs2613/books/nodejs-api/)
## Contributing
Contributions are welcome! If you have suggestions for improvements or want to add new content, please follow these steps:
1. **Fork the Repository**: Click the "Fork" button at the top right of this page to create your own copy.
2. **Create a Branch**: Create a new branch for your feature or bug fix.
3. **Commit Changes**: Make your changes and commit them with clear messages.
4. **Open a Pull Request**: Submit a pull request describing your changes and why they should be merged.
For major changes, please open an issue first to discuss your ideas.
## License
This project is licensed under the [MIT License](https://choosealicense.com/licenses/mit/).
## Star History
[](https://star-history.com/#djeada/Parallel-And-Concurrent-Programming&Date)