Getting Started with Computer Science

Post by 
September 24, 2020
No additional tags.

here has never been a time in our history where computing has been more impactful to society. From machine learning to smartphones to inclusive user experience design, computing touches every single aspect of our lives, keeps us connected to one another, and enables people to solve problems at scale. With computing becoming an emergent and continually integrated facet of everyday living and having untold resources for any practitioner to learn, develop, and create almost anything, it has never been easier to pursue self-education in computing on your own terms.

This ACM Selects focuses on addressing students' and professionals' challenges when taking the first step in their computer science career. Our shortlist recommends a mix of articles and resources that help foster best practices and foundational technical knowledge in the field. In this ACM Selects, we recommend resources that leverage Python, one of the most popular and widely-used programming languages available.

We always want to improve our selection and curation process by including other topics not covered in this shortlist. To that end, we kindly encourage sending your feedback and suggestions to We look forward to your guidance on how we can continue to improve ACM Selects together.

Read more about ACM's ongoing efforts to provide resources for students and professionals through the ACM Learning Center.

"The computer-science community is remarkable in its variety and pervasiveness, and those two qualities are likely to grow even more pronounced in the future. As such, do not shy away from pursuing your goals, as unorthodox as they might seem to be."

Diane Golay, 
PhD in Human-Computer Interaction, Uppsala University;
XRDS co-Editor-in-Chief (2017 - Present)

The Expanding Landscape of Computer Science

First published in XRDS: Crossroads, The ACM Magazine for Students, Vol. 25, No. 1, October 2018.

In her article, XRDS co-Editor-in-Chief Diane Golay reflects on the growing impact of computing across industries and the computer science community's evolving identity. Her address in XRDS emphasizes the value of challenging preconceived notions for what a computer scientist can be.
[Read more]

Words of Wisdom from One Computer Scientist to Another

First published in XRDS: Crossroads, The ACM Magazine for Students, Vol. 25, No. 1, October 2018.

In this article, Parang Saraf connects with computer scientists worldwide to ask what advice they would give to fellow computer scientists. The following responses serve as a good baseline for best practices in one's computing career.
[Read more]

Five programming tips: start your coding career

First published in XRDS: Crossroads, The ACM Magazine for Students, Vol. 17, No. 1, September 2010.

When it comes to learning a new discipline, getting a sense of the best practices is often an uphill battle for students or professionals looking to transition. In this article, Jason Thibodeau presents a good starting point to understand industry-standard programming practices. While there are no expectations for new programmers to incorporate best practices, it is always helpful to build good coding habits that can translate into future work.
[Read more]

Python Programming: An Introduction To Computer Science

Published through SkillSoft. eLearning book access only available to current ACM members.

With its easy-to-use syntax, an extensive library of features, and applicability in real-world production, Python is among the most popular choices for first programming languages. This book introduces basic computer science concepts through Python. With an emphasis on problem solving, design, and programming, this book is a great starter to begin one's journey into programming, using a widely adopted language in the field.
[Read more]

Data Structures and Algorithms in Python

Published through SkillSoft. eLearning book access only available to current ACM members.

Understanding data structures and algorithms are critical for any student in computer science. Data structures are recipes for organizing, storing, and managing collections of data. Different types of data structures are necessary to tackle various tasks in computing. Algorithms are the recipes for performing computing tasks. They include step-by-step instructions, often together with data structures, as solutions to particular computing problems.

These solutions differ from each other in terms of their computation complexity and resource usage. Therefore, designing algorithms and the selection of data structures are crucial aspects of computing. Familiarizing with these subjects early on would help people improve their programming practices and use their knowledge to solve real-world problems. This book introduces data structures and algorithms in Python and discusses the design, analysis, and implementation aspects.
[Read More]

An Introduction to Git for Beginners

First published in XRDS: Crossroads, The ACM Magazine for Students, Vol. 26, No. 4, May 2020.

Version control systems are software tools used to manage changes to files and programs that occur over time. With version control, developers can work concurrently or independently while ensuring that differences introduced in the code can be reviewed and resolved for any conflicts before being added back to the repository. Version control systems can also log and track change histories and revert any unwanted changes accidentally introduced in the development process. These useful features have made virtual control systems a fundamental part of software engineering practice. They are essential for computing professionals to be able to work in a team-based setting.

Git is one of the most popular version control systems used today. It is free and open-source, making it ideal for students and professionals interested in using version control systems. In the following XRDS tutorial, Ankush Pathak introduces the starting steps to set up and run Git, with examples and illustrations on how it works.
[Read more]

THere's More

Recommended Selects

See all selects

Getting Started With HPC

This week's ACM Select features several introductory resources on HPC, with perspectives on the history, technical definitions of HPC terminologies, trends in HPC, and the implications of its use.

Getting Started with Data Science #2

This ACM select highlights several resources about the data science fundamentals and best practices, and compares across different frameworks and tools to help you apply data science in your field.
Getting Started Series

Getting Started with Networks

We hope that this shortlist will be useful as an introduction to Networks and, depending on the stage of your career, set the foundation for your future in Networks or take you down a nostalgic route with some basics and fundamentals of Networks.

Help guide ACM Selects!

Let us know how we can improve your ACM Selects experiences, what topics you would like us to cover in the future, whether you would like to contribute and/or subscribe to our newsletter by emailing

We never share your info. View our Privacy Policy
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
continue learning with the acm digital library!
explore ACM DL