What are the prequisites for studying The Art of Computer Programming?

AI Thread Summary
The discussion centers on the challenges of studying "The Art of Computer Programming" (TAOCP) by Donald Knuth, particularly due to its use of the MIX assembly language, which the user has not yet studied. The user expresses a desire to gain a deeper understanding of computer science beyond their university syllabus and seeks advice on how to approach TAOCP effectively. Responses suggest that while TAOCP is a respected classic, it may not be the most accessible resource for an undergraduate. Recommendations include starting with course materials or more introductory texts on data structures before tackling TAOCP. Additionally, suggestions are made to gain familiarity with assembly language and programming fundamentals through other resources. The user acknowledges their confidence in mathematics and programming but expresses concern about their lack of experience with assembly language. Overall, the conversation emphasizes the importance of foundational knowledge and accessible learning materials in computer science education.
Maths Absorber
Messages
59
Reaction score
3
Hi friends,

I have an avid interest on Mathematics and progranming and am working very hard to become a great computer scientist/ engineer. I have been researching books that woukd help me in this goal and by all accounts, TAOCP is one of them.

I am convinced that studying this book wilk give me a distinct advantage over most of my classmates who just do the university syllabus (which unfortunately, doesn't go into great depth). I'm in my second year of engineering.

However, one major block I've come across is finding out that the book is written on an imsginary computer called MIX in assembky language. We're only going to do assembly language next semester and it's an area I have no experience in. It scared me and I didn't go very far with the book.

My question is what is the best way to go about it? We have a ciurse on data structures this semester and I wish to master it through TAOCP. What is the prequisite required to understand it? Do I need to buy another book and study assembky language and then start reading it or is there any other approach which would help me?

Many thanks for your time.
 
Physics news on Phys.org
Hi Mat,

I have TAOCP in my bookcase for sentimental reasons. For your purposes any other book would be a lot better than trying to get at it through struggling with MIX.
Find something you like, or browse the material for your course.

[edit] if that's not sophisticated enough, a simple google of introduction to data structures should allow you to find something that matches your course topics and leads you further.

Good luck !
 
You are talking about the book by Knuth, right?

https://www.amazon.com/dp/0321751043/?tag=pfamazon01-20

That one?

Probably you could benefit from it. But also, probably you could get the same benefit from some other books that are a bit more accessible. Knuth is more interested in, well, academic issues and theory behind various things. These are interesting questions. But probably there are better ways for an undergrad to get through a class on a particular computer topic.

Knuth is one of those "classic" texts that everybody wants everybody else to read. It's a lot like the Feynman lectures books. Even Feynman wasn't particularly enthusiastic about making it the text for a class. Lots of fun, very interesting, and everybody should read it. But it should not be your main source or main learning material.

For example: If you want to learn data structures, probably the text for your class is the place to start. Or you could even start with one of the really introductory books. Maybe a Schaum's Outline or something like that. Or you could delve into one of the Numerical Recipes books.

https://www.amazon.com/dp/0521880688/?tag=pfamazon01-20

If you wanted to learn to code in a particular language, there are user groups and similar resources. For example, for C++ you could do worse than starting here.

https://isocpp.org/faq

If you want to learn how to code properly, then you want to get into various software engineering topics. For example, learning the "morality" of computer programming is a keen issue. A book I quite like is this one.

https://www.amazon.com/dp/0735619670/?tag=pfamazon01-20
 
Last edited by a moderator:
I would list these as the prerequisites:

(1) Solid mathematics experience, up to at least intermediate calculus.
(2) Experience in a low level programming language. These days probably plain C. You should have written at least 2-3 small programs in plain C.
(3) Experience with assembly language. These days probably x86 or x86_64. You should have written at least 2-3 small programs in pure assembly.
 
Thank you for all your generous inputs.

The book prescribed by my university doesn't appeal to me at all actually. Plus, I've never heard anyone describe it as a classic. That's why I wanted to do The Art of Con liter Programming. I don't want to use it to get through a course. My actual intention behind using it was because it's a classic and so revered. I figured learning it would enhance my skills.

I will definitely check out the numerical Recipes book. Thank you for the recommendations.

I am confident about the mathematical part of it and the programming side of it. I'm worried about the assembly side of it, which I'm completely clueless about.

Anyway, thanks for your help, guys.
 
Bit Britain-specific but I was wondering, what's the best path to take for A-Levels out of the following (I know Y10 seems a bit early to be thinking about A-levels, but my choice will impact what I do this year/ in y11) I (almost) definitely want to do physics at University - so keep that in mind... The subjects that I'm almost definitely going to take are Maths, Further Maths and Physics, and I'm taking a fast track programme which means that I'll be taking AS computer science at the end...
After a year of thought, I decided to adjust my ratio for applying the US/EU(+UK) schools. I mostly focused on the US schools before, but things are getting complex and I found out that Europe is also a good place to study. I found some institutes that have professors with similar interests. But gaining the information is much harder than US schools (like you have to contact professors in advance etc). For your information, I have B.S. in engineering (low GPA: 3.2/4.0) in Asia - one SCI...
I graduated with a BSc in Physics in 2020. Since there were limited opportunities in my country (mostly teaching), I decided to improve my programming skills and began working in IT, first as a software engineer and later as a quality assurance engineer, where I’ve now spent about 3 years. While this career path has provided financial stability, I’ve realized that my excitement and passion aren’t really there, unlike what I felt when studying or doing research in physics. Working in IT...
Back
Top