pages

» main page

» syllabus

» sakai / e-learning

contact info

Room: CSE E222

Time: MWF3 (9:35am)


instructor

Nuri Yeralan

office: by appt

syeralan AT cise.ufl.edu


teaching assistant

Mohsen Ali

office: F in E309 @ 10:40-12:35

moali AT cise.ufl.edu

COP 4331 : Object-Oriented Programming

Room Details

Room: CSE E222
Time: MWF 9:35am

Instructor Details

Instructor: Nuri Yeralan
Office: By appointment
E-mail: syeralan AT cise.ufl.edu

TA: Mohsen Ali
Office: E309 Fridays 10:40-12:35
E-mail: moali AT cise.ufl.edu



Prereqs

CIS 3020: Advanced Programming Fundamentals (or equiv)
COP 3530: Data Structures and Algorithms
Working knowledge of UML

Catalog Description

This course discusses fundamental conceptual models for programming languages and illustrates these with specific programming languages and application problems. Specific topics include class and object models and inheritance among classes and objects and static and dynamic systems and implementations.

Course Overview

This course discusses fundamental conceptual models for object-oriented programming and illustrates these with Java language and application problems. We will be covering object oriented terminology extensively while emphasising the practical importance of the concepts.

This course is geared for motivated, highly capable upper division students who enjoy software development and abstract thinking. Those merely seeking an easy technical elective may be deeply unhappy; those willing to put forth the time and effort will likely find this to be very useful in the long run. This course focuses on large-scale engineering problems that require OO design and a rich understanding of design tradeoffs.

Personal Teaching Philosophy

My ultimate goal is to prepare you for industry. I view this course as the apex of undergraduate topics in Computer Engineering. As a result, I intend to draw from examples in Data Structures and Algorithms, Networking, Operating Systems, Compilers, Programming Language Principles, Software Engineering, etc. Although the formal prereqs are listed above, you may find yourself bringing all your knowledge and experience to bear on challenges presented in this class.

Course Objectives

Upon completion of this course, the successful student will have competency in:

  • The history of object-oriented programming and design
  • OOP language design and implementation
  • Building robust class hierarchies
  • Evaluating design tradeoffs
  • Implementing non-trivial OO projects across full software lifecycles
  • Analyzing, maintaining, and extending existing programs
  • Analyzing, using, and designing threadsafe code
  • Designing scalable software systems

Topics To Be Covered (in no particular order; this list may change)

  • Introduction to OOP - History and Language Evolution
  • OOP Principles
    • Encapsulation
    • Abstraction
    • Polymorphism
    • Inheritance
  • OOP Design Patterns
    • Factory
    • Adaptor
    • Visitor
    • Observer
    • Decorator
    • Chaining
    • Command
    • Strategy
    • Singleton
  • Parallel/Concurrent Programming
    • Fork-Join Parallelism (Scala)
    • Asynchronous Programming (Executors, Futures, Reactor pattern)
    • Data Races & Thread Safety
    • Immutability
    • Guarded Suspension
    • Transactional Semantics
    • Optimistic Locking
    • Actor Model
  • Industry Practices
    • Cross-Cutting Concerns (Security, Audit Logging, Error Reporting)
    • Lazy-Loading
    • Serialization (Memento)
    • Remote Method Invocation
    • Process Migration
    • Model-View-Controller Pattern
    • Hibernate & ObjectDataProviders
    • Web Services
    • MemCache
    • Map-Reduce
    • Stateless Architecture
    • N-Tier Architecture
    • Peer-to-Peer Systems
  • Scientific Computing
    • Accelerator-based Computing
    • SPMD (GPU) Architectures
    • NUMA Architectures

Grading

  • 80% Projects (4 total : 10%, 20%, 20%, 30%)
    • Project 1 is to be done individually.
    • Projects 2-4 represent three sprints each with group and individual deliverables.
    • Project specs & requirements are dynamic and may change at instructor's discretion.
    • Non-functioning code will earn no points.
    • Late project submissions will not be graded.
  • 20% Quizzes (1 per week)
    • Administered at random; cumulative but tend to focus on recently covered material
    • No makeup quizzes will be administered.
  • Letter grade will be based on a curve.

Academic Dishonesty

http://www.dso.ufl.edu/sccr/honorcode.php

Read Academic Honesty Guidelines as posted by Dean of Students Office. All academic dishonesty cases will be handled through the University of Florida Honor Court procedures as documented by the Office of Student Services, P202 Peabody Hall. You may contact them at 392-1261 for "Student Judicial Process: Guide for Students" pamphlet.

Students with Disabilities

Students requesting classroom accommodation must first register with the Dean of Students Office. The Dean of Students Office will provide documentation to the student who must then provide this documentation to the Instructor when requesting accommodation.

 

News · Calendar · Directory · MyUFL · ISIS · Web Site Listing · Campus Map · WebMail · Ask UF · Disability Services · Privacy Policy · Search

© University of Florida · Department of Computer Information Science and Engineering · Gainesville, FL 32611 · +1.352.392.3261

ASCIE is a proud member of the Gator Nation.