Advanced Programming with Java & Python

CSCI 3800: Advanced Programming using Java and Python

Department of Computer Science and Engineering - College of Engineering and Applied Sciences - University of Colorado Denver

Term:Fall 2018

Course Overview:

Welcome to Advanced Programming using Java and Python. There are quite a lot different programming languages for you to learn out there. In this course we will focus on two similar but different languages that are widely used in industry and academia. Moreover, we will discuss some design techniques and patterns that will allow us to design, document and communicate how our programs work. If you want to learn the most innovative and broadly used languages, if you are interested in topics like Data Science, Big Data, if you want to lear how to build programs that can give service not to only one but many users at the same time, this course is for you. I hope that this class is not only informative for you, but also fun!

University Course Catalog Description: This course introduces the fundamental concepts to develop programs and projects using modern software engineering techniques using two different programming languages (Java and Python). It will cover and apply pattern design approaches, reusable components driven by everyday needs within many software developments, the relationships between object-oriented programming concepts and software design concepts. It will dig deeper into techniques to program single threaded applications as well as advanced techniques to construct concurrent and distributed applications.

Expected Knowledge at the Start of the Course: Students are expected to understand the basic concepts of Object-Oriented Programming and the basic concepts behind Data Structures and Algorithms. Students are expected to understand the basic concepts of Program Construction.

Expected Knowledge Gained at the end of the Course: Students are expected to understand

  • Java Programming Concepts and Constructs,
  • Python Programming Concepts and Constructs,
  • basic UML concepts,
  • the use of recursion and lambdas and anonymous functions,
  • multi-threading and concurrency issues on parallel programs,
  • the presented Software Design Concepts and patterns and have the skills to apply them to the construction of Java Programs.

Topics:

  • Introduction Java and Python. A deep look to Classes and Objects: Inheritance and Polymorphism. Exception Handling. Collections, Lists and Dictionaries.
  • Recursion, data structures and algorithms. Design Patterns and UML.
  • Multi-threading, Concurrency and Networking. Lambdas and anonymous functions.
  • Unit Testing and Frameworks

Course Prerequisites:CSCI2421 – Data Structures & Program Design.

Textbook:

Two textbooks are required for this course:

  • How to program Java. Early Objects. By P. Deitel and H. Deitel. Pearson. ISBN13: 978-0-13-474335-6. (Required)
  • Python 3 Object-oriented Programming Second Edition. By Dusty Phillips. Packt. ISBN13: 978-1784398781. (Required)

Other books, for deepening knowledge, are recommended:

  • Programming Python: Powerful Object-Oriented Programming. 4th edition. By M. Lutz. O’Reilly. ISBN13: 978-0-59-615810-1
  • Object-Oriented Software Engineering: Practical Software Development Using UML and Java. By T.C. Lethbridge and R. Laganiere. Mc Graw Hill. ISBN13: 9780077109080

Course Schedule

  1. Course Introduction
  2. Lecture 1: OO Concept Review.
  3. Lecture 2: Java Basis.
  4. Lecture 3: Python Basis.
  5. Lecture 4: Arrays and Lists.
  6. Lecture 5: Classes and Object - A deeper look.
  7. Lecture 6: Inheritance and Polymorphism.
  8. Lecture 7: Abstract Classes, Interfaces and Generic Classes.
  9. Lecture 8: Collections Data Structures.
  10. Lecture 9: Design Patterns / UML.
  11. Lecture 10: Networking.
  12. Lecture 12: Java FX.
  13. Lecture 13: JUnit & UnitTest.
  14. Lecture 14: Big Data: Map Reduce and Hadoop.

Readings