Introduction to Programming and Data Structures (COMPSCI 201)

Spring 2024-2025 / Session 3   [ 7 weeks, 35 + (8.75 | 8.75) + 8.75 hours ]

Course Period: January 6 - February 27, 2025

  • Lectures: Monday / Tuesday / Wednesday / Thursday @ 10:00-11:15 (Classroom: IB 2071)
  • Labs (Classroom: IB 3106)
    • 001L: Thursday @ 13:15-14:30
    • 002L: Thursday @ 14:45-16:00
  • Recitation Wednesday @ 18:00-19:15 (Classroom: IB 2071)
  • Peer Tutoring (ARC) Thursday @ 19:30-20:30 (Classroom: CCT E2103)
Instructor: Mustafa MISIR (Office: WDR 2106), mustafa.misir [at] dukekunshan.edu.cn   /   mm940 [at] duke.edu
Teaching Assistant: TBA (Office: TBA)

Programming is the process of designing, writing, testing, and maintaining the code that allows Software applications to function. It is a fundamental skill in Computer Science (CS) and an essential tool for solving complex problems in various fields, from web development to Artificial Intelligence (AI). At its core, programming involves creating a set of instructions, or an algorithm, that a computer can execute to perform specific tasks. The choice of programming language depends on the problem domain; for example, Python is popular for data science, C++ for high-performance applications, and Java for its versatility and portability. Java, in particular, is a widely-used programming language known for its simplicity, reliability, and platform independence through the Java Virtual Machine (JVM). It is a fully object-oriented language, emphasizing reusability and modularity, which makes it ideal for learning core programming concepts like control structures, error handling, and object-oriented principles such as inheritance, encapsulation, and polymorphism.

When combined with Data Structures, programming becomes a powerful tool for building efficient and scalable software. Arrays, linked lists, stacks, queues, and trees serve as the foundation for many applications, from basic calculators to advanced search engines. Java's Collections Framework offers robust, ready-made implementations of these structures, allowing programmers to focus on algorithmic problem-solving rather than the intricacies of low-level data management.

This course will touch the basic programming concepts with their use in Java. Beyond programming, various fundamental Data Structures will be introduced alongside with relevant Algorithms and their evaluation. To be specific, data and representations, functions, conditions, loops, strings, lists, sets, maps, hash tables, trees, stacks, graphs, object-oriented programming, programming interface and software engineering will be covered. While no previous knowledge is required, some background is advantageous.

This course will be carried out in line with the DKU's animating principles. In particular, Collaborative Problem Solving, Research and Practice and Lucid Communication will be directly involved with this course while touching the Independence and Creativity aspect. The course will be primarily executed through in-class individual / group discussions, weekly assignments, and a final group project.

By the end of this course, you will be able to:
  1. define, and explain fundamental programming concepts such as data types, variables, and control structures
  2. design, and implement Java programs using classes, objects, and interfaces, following the core Object-Oriented Programming (OOP) principles
  3. construct, and utilize fundamental data structures such as arrays, linked lists, stacks, queues, hash tables, and trees
  4. analyze the efficiency of those data structures in terms of time (Big-O) and space complexity with basic relevant algorithms
  5. implement, and evaluate basic data-structure oriented algorithms of searching, sorting, and graph / tree traversal
  6. develop projects under a given set of given requirements in teams
Follow Canvas for resources and course activities   |   Ed Discussion for announcements, questions and discussions   |   Academic Calendar   |   Undergraduate Bulletin   |   DKU Hub


The chart, on the right, shows how COMPSCI 201 fits to the DKU curriculum, where the abbreviations indicate the course types, i.e. D: Divisional, DF: Divisional Foundation, ID: Interdisciplinary and E: Elective. Refer to the DKU Undergraduate Bulletin (2024-2025) for more details.

Pre-requisite(s)

  • None

Anti-requisite(s)

  • None
Yet, COMPSCI 101 and STATS 102 are anti-requisites to COMPSCI 201.



Reference Books

Computer Science: An Interdisciplinary Approach, Robert Sedgewick, Kevin Wayne (1st Edition), 2016/2017, Addison-Wesley (DKU/Duke U. Ebook Access Code) [ Materials + Source Code ]

Supplementary Books:

Tutorials

Exercises



Lecture Notes / Slides



Grading

  • Homework Assignments: 30%
    • Mathematical, Conceptual, or Programming related
    • Submit on Canvas
  • Final Group Project: 15%
  • Midterm: 20%
  • Final: 35%


Reference Courses



Other Books

Quick / Easy Reads:
Algorithms (+ Data Structures):
Algorithms (+/ Data Structures) with Python++:
Paradigms of Programming Languages:
Foundations of Computer Science:
More Related:

Other Materials / Resources

Cheat Sheets: Algorithm Visualization / Animation: Miscellaneous: General: