Essential Programming Fundamentals with Java: A Comprehensive Course Wrap-Up
470 likes | 586 Views
This course wrap-up covers key topics in programming fundamentals using Java. Students will learn about Object-Oriented Programming, including inheritance, abstract classes, interfaces, and polymorphism. The curriculum also covers essential concepts like file I/O, searching and sorting algorithms, basic data structures (arrays, ArrayLists, stacks, queues, linked lists), and GUI design. Additionally, the wrap-up touches upon version control systems like Git and Mercurial, as well as exposure to other programming languages. Key interview questions and practical tasks reinforce learning outcomes.
Essential Programming Fundamentals with Java: A Comprehensive Course Wrap-Up
E N D
Presentation Transcript
COP 3503 FALL 2012ShayanJavedLecture 19 Programming Fundamentals using Java
What you should know • Object-Oriented Programming
What you should know • Object-Oriented Programming • Inheritance, Abstract Classes, Interfaces, Polymorphism, How to Design, etc.
What you should know • Object-Oriented Programming • Inheritance, Abstract Classes, Interfaces, Polymorphism, How to Design, etc. • File I/O
What you should know • Object-Oriented Programming • Inheritance, Abstract Classes, Interfaces, Polymorphism, How to Design, etc. • File I/O • Searching and Sorting algorithms
What you should know • Object-Oriented Programming • Inheritance, Abstract Classes, Interfaces, Polymorphism, How to Design, etc. • File I/O • Searching and Sorting algorithms • Basic Data Structures • Arrays, ArrayLists, Stacks, Queues, Linked Lists
What you should know • Object-Oriented Programming • Inheritance, Abstract Classes, Interfaces, Polymorphism, How to Design, etc. • File I/O • Searching and Sorting algorithms • Basic Data Structures • Arrays, ArrayLists, Stacks, Queues, Linked Lists • GUIs
Sample Interview Questions • What is Polymorphism and why is it useful?
Sample Interview Questions • What is Polymorphism and why is it useful? • Design a Parking Garage
Sample Interview Questions • What is Polymorphism and why is it useful? • Design a Parking Garage • Lots of coding questions involving data structures (Linked Lists, Arrays, Trees, Hashmaps, etc.)
Version Control • Used to keep track of changes within your project.
Version Control • Used to keep track of changes within your project. • Who made what changes, why, when
Version Control • Used to keep track of changes within your project. • Who made what changes, why, when • Can look at history of changes
Version Control • Used to keep track of changes within your project. • Who made what changes, why, when • Can look at history of changes • Can revert to previous version at any time
Version Control • Used to keep track of changes within your project. • Who made what changes, why, when • Can look at history of changes • Can revert to previous version at any time • Git and Mercurial – two version control systems
Version Control • Used to keep track of changes within your project. • Who made what changes, why, when • Can look at history of changes • Can revert to previous version at any time • Git and Mercurial – two version control systems • GitHub (free website for your repositories) • Google Code Repositories
Version Control • Create an account and store all your projects on there. (For all your future courses too)
Version Control • Create an account and store all your projects on there. (For all your future courses too) • Also serves as a portfolio
Version Control • Create an account and store all your projects on there. (For all your future courses too) • Also serves as a portfolio • Look up tutorials online on how to use Git/Mercurial
Programming Languages • Already know Java.
Programming Languages • Already know Java. • Will learn C/C++ for next courses.
Programming Languages • Already know Java. • Will learn C/C++ for next courses. • Try to learn it by yourself too (pointers!)
Programming Languages • Already know Java. • Will learn C/C++ for next courses. • Try to learn it by yourself too (pointers!) • But should also try to learn other languages like: • Python (used at Google/NASA/IBM), Ruby (Amazon), Perl (Amazon), Lua (Game Scripting), C# (for Windows), Javascript (Web Programming), Objective-C (Macs, iOS)
Programming Languages • Can write programs in Python/Ruby very quickly.
Programming Languages Task: • Open a text file named 'list.txt' • Create a list of the lines with more than 5 characters in the text file Python program: mylist = list()myfile = open('list.txt')for line in myfile: if len(line) > 5:mylist.append(line)
Programming Languages Task: • Open a text file named 'list.txt' • Create a list of the lines with more than 5 characters in the text file • Python program: mylist = list()myfile = open('list.txt')for line in myfile: if len(line) > 5:mylist.append(line)
Programming Languages Task: • Open a text file named 'list.txt' • Create a list of the lines with more than 5 characters in the text file • Python program: (“long” version) mylist = list()myfile = open('list.txt')for line in myfile: if len(line) > 5:mylist.append(line)
Programming Languages Task: • Open a text file named 'list.txt' • Create a list of the lines with more than 5 characters in the text file • Even shorter version: mylist = [line for line in open('list.txt') if len(line) > 5]
Linux • Very useful to be proficient at the Linux (or Mac) command line.
Linux • Very useful to be proficient at the Linux (or Mac) command line. • High-learning curve, but very powerful.
Linux • Very useful to be proficient at the Linux (or Mac) command line. • High-learning curve, but very powerful. • Learn unix commands, bash scripting, Makefiles for compiling, etc.
Linux • Very useful to be proficient at the Linux (or Mac) command line. • High-learning curve, but very powerful. • Learn unix commands, bash scripting, Makefiles for compiling, etc. • Used for development everywhere (except for Microsoft)
Linux • Learn a text editor:
Linux • Learn a text editor: • VIM • My personal choice. • High learning curve, but once again very powerful.
Linux • Learn a text editor: • VIM • My personal choice. • High learning curve, but once again very powerful. • Emacs • Also very good and powerful.
Mobile Development • Android and iOS obviously very popular.
Mobile Development • Android and iOS obviously very popular. • You know Java now – try to make some apps.
Mobile Development • Android and iOS obviously very popular. • You know Java now – try to make some apps. • Good way to practice and show people what you made. • Maybe also make some money
Conclusion • Need to put in a lot of effort yourself. • You won’t learn everything in class
Conclusion • Need to put in a lot of effort yourself. • You won’t learn everything in class • Hopefully you enjoyed the course and (importantly) learned a lot.