CSE 17 Programming and Data Structures (3)


E. Fouh Mbindi, Jeff Heflin (Spring 2017, Fall 2017)

Current Catalog Description

Algorithmic design and implementation in a high level, object-oriented language such as JAVA. Classes, subclasses, recursion, searching, sorting, linked lists, trees, stacks, queues. Prerequisite: CSE 002 and (CSE 001 or CSE 012 or ENGR 010 or ENGR 097)


Y. Daniel Liang, "Introduction to Java Programming", 10th Edition, Prentice Hall, 2014, ISBN 978-0133761313


Walter Savitch, "Absolute JAVA" (2009) or 4th Edition, Prentice-Hall, 2009.


Student will have

  1. To become fluent in writing code in JAVA.
  2. The ability to design class structures.
  3. To understand data abstraction and abstract data types.
  4. To understand object oriented concepts such as polymorphism,inheritance and encapsulation.
  5. To understand Exception Handling.
  6. To become familiar Streams and File I/O.
  7. To understand how to write and use recursive functions.
  8. To understand Linked List Data Structures to include Queues and Stacks.
  9. To understand Tree Data Structures.
  10. To understand Arrays and Multidimensional Arrays.
  11. To become familiar with unit testing.


CSE 17 substantially supports the following student enabled characteristics.

A. An ability to apply knowledge of computing and mathematics appropriate to the discipline.

J. An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices.

Major Topics Covered in the Course

  • Object Oriented Programming
  • Classes and methods
  • Sorting
  • Selection
  • Abstract Data Types
  • Inhertance
  • Encapsulation
  • Polymorphism
  • Streams and File I/O
  • Exception Handling
  • Arrays
  • Linked Lists
  • Stacks
  • Queues
  • Tree Structures
  • Building small to Mid-Size Programs

Assessment Plan for the Course

Course projects consists of eight to nine programming assignments. The project components are assigned in roughly increasing order of size and difficulty; proportionately more time is allotted for the later assignments. Approximately 3 days to one week is given for each assignment. Each assignment typically covers one of the major topics in the course. Typically (2) hourly exams are given and one three hour final exam. Each hourly exam consists of 5-8 questions. Students are asked to write a complete program, determine the output of a prefined program or write a program segment. Each question will cover a topic or topics covered in class. The final exam consists of 10-15 questions covering all topics in class and a specific question on different data structures. Student performance is tracked on each programming assignment, hourly exams and final exam.

How Data in the Course are Used to Assess Program Outcomes

(unless adequately covered already in the assessment discussion under Criterion 4)

Each semester a self-assessment report is created with data from my assessment plan of the course. The report is reviewed, in turn, by the Curriculum Committee.

AP Credit and Credit by Examination

© 2014-2016 Computer Science and Engineering, P.C. Rossin College of Engineering & Applied Science, Lehigh University, Bethlehem PA 18015.