470 likes | 585 Vues
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.
E N D
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.