I am a PhD student in social science who got interested in programming via data analysis in R and various utility tools in Python, SQL, Java (for web scraping, data querying, etc.).
I am considering whether I should take several undergrad CS classes at my university, including 1) Data Structure & Algorithm, 2) Software Development (both in Java), and 3) Database.
My concern is that I've seen various posters on this site claiming that what's taught in CS program has very little to do with the craft of programming itself. My main goal is to better my data analysis skills (for a data science career) and perhaps learn some machine learning and agent-based modeling. Given that goal, should I those classes? If not, what's the best way to learn programming the applied way?
(A common answer to "how to learn programming by yourself" is to do a project. However, engaging in a project without guidance and quick feedback is a very easy way to get sidetracked, especially since I'm in social science where programming skill is nothing but a tool and not valuable in and of itself. So, if your answer is "to do a project", please provide more details on how to get guidance, e.g. data analysis books)