CSCI3800 - Advanced Programming with Java & Python (Fall 2018)

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

This is the tentative schedule for the course.

#Session Date Topic and Reading Readings
1 8/21 Course Introduction  
2 8/23 Lecture 1: OO Concept Review J1, P1
3 8/28 Lecture 2: Java Basis J1 to J5
4 8/30 Lecture 2: Java Basis  
5 9/4 Lecture 3: Python Basis P2
6 9/6 Lecture 3: Python Basis  
7 9/11 Lecture 4: Arrays and Lists J7, Pb1
8 9/13

Lecture 4: Arrays and Lists. An introduction to Exceptions

 
9 9/18

Lecture 5: Classes and Object - A deeper look

J8-10, P3 P5
10 9/20

Lecture 6: Inheritance and Polymorphism.

J8-10, P3 P5
11 9/25

Lecture 7: Abstract Classes, Interfaces and Generic Classes

J10 J20, P3
12 9/27

Lecture 7: Abstract Classes, Interfaces and Generic Classes

J10 J20, P3
13 10/2

Lecture 7: Generic Classes (cont'd)

Lecture 8: Collections Data Structures

J16, P6
14 10/4 Lecture 8: Collections Data Structures J16, P6
15 10/9 Lecture 9: Design Patterns / UML P9-10
Design Patterns Book
16 10/11
17 10/16
18 10/18 Lecture 10: Networking Pb5
J28
19 10/23
  10/25  
20 10/30 Lecture 11: Multithreading / Concurrency Pb5
P13
J23
21 11/1
22 11/6
23 11/8
24 11/13 Lecture 12: Java FX J12 & J13
26 11/15 Lecture 13: JUnit & UnitTest Links below
-- 11/20 Fall Break. No Class
-- 11/22
27 11/27 Lecture 14: Big Data: Map Reduce and Hadoop Lecture Notes
28 11/29 Exam Review  
29 12/4 Project Presentations

Project is Due 12/3

11:59pm. 

30 12/6
Finals Week Term Exam: Tuesday Dec. 11th. 2-4pm MAC-Lab

 

J: Java: How to program.

P: Python 3 - Object Oriented Programming.

Pb: Programming Python 4th ed.

Design Patterns: Elements of Reusable Object-Oriented Software. E.Gamma

JUnit: https://junit.org/junit5/docs/current/user-guide/

UnitTest: https://docs.python.org/3/library/unittest.html