While the study of data structures and algorithms is the focus of this course, programming is a key activity, and in particular Java programming. The course has a prerequisite of proficiency in Java programming that includes the following concepts:
variables
operators
primitives
scope
Variable and Methods
JUnit Testing
Mutation Testing
Classes
Methods
Inheritance
Encapsulation
Polymorphism
Interfaces/Abstract classes
Java Generics
File I/0, both text and binary
if-then
while loops
for loops
try...catch...finally
Exception Handling
[ https://opendsa-server.cs.vt.edu/ODSA/Books/CS3/html/ ]
Chapter 1 is "what is this about"
Chapter 2 is "how do I set up my coding environment"
Chapter 3 is "what math background will I need".
While students are not expected to read these chapters before the start of the course, seeing what the textbook looks like and what content will be included (more or less) could help students know where to find it for later use.
We have found that while having background in another language is useful, not having a background in Java can put students at a disadvantage, because students will need to learn both the course material, as well as learning Java to complete the programming assignments.
CS 5040 Professors have reccomended a 30 minute - 3 hour Java/OO programming guide from your favorite CS content creator can be a good place to begin your studies.
Go to instructor office hours and communicate with them about any issues with the class early and often.
CS 5040 Professors highly recommend most 5040 students to attend office hours early to ask about the tools, getting Eclipse set up and understanding Web-CAT in particular. Graduate students who come from outside the Virginia Tech system may have slight disadvantages when it comes to using the previously mentioned tools so they should act quickly and ask for assistance to resolve standing issues.
Utilize the TA’s to the fullest extent possible without relying solely on them to walk you through everything. (learning isn’t done through hand holding but through failure).
Read the OpenDSA text (multiple times) and if you don’t understand a concept or the terminology, ask questions or even Google it (copy and paste what you don’t understand into the search bar and read reputable research).
Utilize StackOverFlow, additional Java textbooks that may explain things in a simpler way (Java for Dummies for example), X (twitter), Reddit, and other “forum/discussion board” platforms where it may also be helpful to understand what to do or not to do through your Java or Coding pages.
For students that are interested in taking an online course in Java, we recommend the following online courses as remediation:
Object Oriented Programming in Java (Links to an external site.) from Coursera. (Courses 1, 2, and 3 in this collection)
Java Programming Masterclass for Software Developers (Links to an external site.)from Udemy.
Java Programming Collection (Links to an external site.) from LinkedIn Learning (requires VT Login)