Mathematics Expert and New Learner: Navigating the Path to Computer Science
Transitions from mathematics to computer science can sometimes be daunting, especially for those who have yet to try programming. Am I at a disadvantage? What if I am really good at maths but have no coding experience? Let’s dive into understanding and preparing for this exciting career path.
Mathematics for Computer Science
Firstly, there’s no need to worry if you are really good at maths and have no experience in coding. Mathematics and computer science are closely intertwined. What you have is a strong foundation in secondary-school mathematics, which is a great start for university-level computer science.
Most university courses in computer science cover various branches of mathematics, such as discrete mathematics, algorithms, and theory. These areas of mathematics are crucial for understanding the fundamental principles of computer science. If your interest lies in continuous mathematics, such as calculus, you may find some overlap, particularly in fields like numerical methods. However, if discrete mathematics, such as set theory, appeals to you, you are well-equipped to dive into computer science studies.
Learning to Code
When it comes to learning programming, the key is not just to get familiar with a programming language but to understand the underlying concepts and principles. Many introductory programming courses begin with the basics, such as using a language to build tools, similar to how someone learns to use carpentry tools. While fewer universities focus on teaching a single high-level language like Haskell, they often have courses that aim to encourage critical thinking and a deeper understanding of computer science.
Starting Your Programming Journey
For those who are new to programming, starting with a hardware platform like a Raspberry Pi can be a fantastic idea. Unlike a phone or tablet, a real computer with a physical monitor, mouse, and keyboard can provide a more engaging and immersive learning experience. Here are a few programming languages that align well with a strong mathematical background:
Python: Known for its readability, Python is a great choice for beginners and is widely used in scientific computing and data analysis.
Racket: This language is excellent for learning functional programming and has a rich ecosystem of libraries and tools.
Logo: Historically used in educational settings, Logo is a simple yet powerful language that can teach basic programming concepts, especially when supplemented with books like Computer Science Logo Style by Brian Harvey.
Resources and Recommendations
The Raspberry Pi Foundation is geared towards beginners, and their philosophy is to embrace students with no prior experience in computers and computer science. This initiative highlights the importance of accessible and inclusive education in coding.
For a comprehensive guide to learning programming, consider the following resources:
1. Logo and its Adventures: The free series of books that include Computer Science Logo Style (a three-volume series for teenagers and their teachers, or adults without programming experience) and FREE for personal use.
2. Turtle Geometry by Hal Abelson and Andrea diSessa. Although this is a college-level math text, it provides a comprehensive understanding of geometric concepts, which are relevant to computer science.
3. T'hety Sy Matemetics: Another excellent college-level math text that can supplement your learning.
Personal Insights
My own journey into programming started with a desire to plot graphs from Algebra class on the computer. At the time, I used BASIC, but Python or Racket or Logo would be more suitable now. Over time, I delved into graphing polar equations, fractals, and exploring spreadsheets. Each step involved leveraging mathematical concepts and applying them to practical computing tasks.
While Computer Science Logo Style provided a significant boost to my understanding of programming concepts, I eventually lost momentum. However, the knowledge gained laid a solid foundation for my future learning. Today, the Racket language, with its emphasis on functional programming, stands out as a particularly effective tool for learning these concepts.
Ultimately, the path to becoming a proficient computer scientist is filled with opportunities to apply and expand your mathematical knowledge. Embrace every resource available and continue to explore the fascinating world of programming.