An open API service indexing awesome lists of open source software.

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.

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.

![Programmer Thinking with Threads](https://user-images.githubusercontent.com/37275728/220352641-fb9487f6-e2a6-4433-943d-fffef4141c02.jpeg)

## 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

[![Star History Chart](https://api.star-history.com/svg?repos=djeada/Parallel-And-Concurrent-Programming&type=Date)](https://star-history.com/#djeada/Parallel-And-Concurrent-Programming&Date)