CSCI 280 Object-Oriented Programming (Java)

(a practical and no-nonsense course)
Java Introduction Java Wiki Help
Java Tutorials GeeksforGeeks Java (Oracle) Java67 TutorialsPoint JavaTpoint
W3Schools Wikibooks OOP CCSU Examples
Java References Classes APIs Examples Princeton UT
Web Programming HTML CSS CGI Perl PHP
General Information Discord EE/CS Wiki EITS UND Help Stack Overflow


Syllabus: Fall 2024   Credit hours: 3
Class times: 10:10am – 11:00am, MoWeFr Classroom: Harrington Hall 218
 
Instructor: Wen-Chen Hu   (my teaching philosophy) Office: Upson II 366K
: https://und.zoom.us/j/2489867333 Email: wenchen@cs.und.edu
Office hours: 02:30pm – 04:30pm, MoWeFr
 
Prerequisite: CSCI 265 Introduction to Programming Languages with a grade of C or better
 
Synchronous class delivery: The class lectures will be delivered synchronously via https://und.zoom.us/j/2489867333, and the Zoom video will be posted on the Blackboard afterwards.
 
Lecture notes: No textbook will be used. Instead award-winning, interactive, informative, and practical lecture notes (based on GeeksforGeeks, TutorialsPoint, W3Schools, JavaTPoint, and other online documents and user manuals) and detailed and precise class instructions will be provided. Collectively, the lecture notes and instructions are more like a small book, which supplies much more information than regular notes do and makes the subject studies much easier. Students will not have problem learning the subjects or taking the exams after studying them and doing programming exercises.



Grading:


Announcements:



Tentative Schedule:


Week

Class Topic  Due  Where
0 0. Computer Career and Data Research & Technologies    
  0.1 A computer career    
  0.2 Data research    
  0.3 Data technologies    
1 08/23
08/25
1. Introduction to CSCI 280    
  1.1 Course outline  
  1.2 Object-oriented programming (OOP)    
  1.3 C++ vs Java    
2 08/28
08/30
09/01
2. Programming Exercise I    
  2.1 Specifications    
  2.2 Step-by-step construction    
  2.3 Software and tools to be used    
08/30  Last day to add a course or drop without record
 Last day to add audit or change to/from audit
 Last day to receive a refund on a dropped class
 Drops after the last day to add will appear on a transcript.
   
3 09/06
09/08
3. Introduction to Java    
  3.1 A hello-world Java program    
  3.2 Java components    
  3.3 Java built-in packages    
09/04
Holiday, Labor Day (Monday) — no classes
   
4 09/11
09/13
09/15
4. Basic Syntax    
  4.1 First Java program    
  4.2 Primitive data types    
  4.3 Operators    
5 09/18
09/20
09/22
5. Programming Exercise II    
  5.1 Step-by-step construction EX I  
  5.2 Arrays    
  5.3 Files and I/O    
6 09/25
09/27
09/29
6. Non-Primitive Data Types    
  6.1 Number class    
  6.2 Character and String classes    
  6.3 Boolean class    
7 10/02
10/06
7. Control Structures and Exceptions    
  7.1 The if and switch statements    
  7.2 The while and for loops    
  7.3 Exceptions    
10/04
Exam I (for both on-campus and on-line students; 6:30pm – 8:30pm, Wednesday)
   
8 10/09
10/11
10/13
8. Classes and Objects    
  8.1 Classes    
  8.2 Objects    
  8.3 Methods    
9 10/16
10/18
10/20
9. Classes and Objects (Cont.)    
  9.1 Constructors EX II  
  9.2 Member methods    
  9.3 Accessing methods    
10 10/23
10/25
10/27
10. Inheritance and Association    
  10.1 Inheritance    
  10.2 Aggregation    
  10.3 Composition    
11 10/30
11/01
11/03
11. Abstraction and Encapsulation    
  11.1 Abstraction    
  11.2 Encapsulation    
  11.3 Interfaces and packages    
12 11/06
11/08
12. Polymorphism, Overloading, and Overriding    
  12.1 Polymorphism    
  12.2 Overloading    
  12.3 Overriding    
11/09  Last day to change to or from S/U grading
 Last day to change to or from audit grading
 Last day to drop a full-term course or withdraw from school
   
11/10
Holiday, Veteran’s Day (Friday) — no classes
   
13 11/13
11/17
13. Database-Driven Websites Using JDBC    
  13.1 System setup EX III  
  13.2 Construction steps    
  13.3 Related software and tools    
11/15
Exam II (for both on-campus and on-line students; 06:30pm – 08:30pm, Wednesday)
   
14 11/20 14. Databases and SQL    
  14.1 Introduction to databases    
  14.2 SQL (Structured Query Language)    
  14.3 Query examples    
11/22
11/23
11/24
Thanksgiving Recess (WeThFr) — no classes
   
15 11/27
11/29
12/01
15. JDBC (Java DataBase Connectivity)    
  15.1 Query execution    
  15.2 Processing the result sets    
  15.3 Making changes to the databases    
16 12/04
12/06
16. Miscellaneous Java Topics    
  16.1 Collection and Map    
  16.2 Map and ArrayList    
  16.3 Wrap-up EX IV  
17 12/13
Final exam (for both on-campus and on-line students; 06:30pm – 08:30pm, Wednesday)
   
18 12/19 Grades posted before noon, Tuesday    

11 Most In-Demand Programming Languages in 2023 according to Berkeley Extension are given as follows:

  1. JavaScript (Web)
  2. Python
  3. HTML (Web)
  4. CSS (Web)
  1.  Java 
  2. SQL (database)
  3. NoSQL (database)
  4. C#
  1. Rust
  2. Perl
  3. Go


Computer science is different from many other disciplines (like electrical engineering). It is more like a professional school (such as culinary schools), which emphasizes practical works instead of subject studies because many IT companies want the new recruitees to start contributing immediately. There are three kinds of computing personnel: Unless you have an impressive resume or a strong connection, practicing tens or hundreds of questions posted at the LeetCode is a must in order to secure a job at corporations (like Google and Facebook). Otherwise, your chance of answering the questions correctly is low because of their high difficulty and time constraint. In addition, you need to create LinkedIn pages to show your achievements, and may consider uploading your projects to the GitHub to showcase them.



Remark I: Definitions, terminologies, and theories will be discussed minimally in this course. Instead practical works and programming knowledge will be emphasized and enforced.

Remark II: Online asynchronous is also provided for the distance students. It is conducted fully through Internet instruction. For details, check UND Online & Distance Education or DEDP (Distance Engineering Degree Program). Besides, https://und.zoom.us/j/2489867333 or YuJa is used for hosting and sharing lecture videos, and ProctorU may be used to monitor the exams.

Remark III: Java may be the most important production language, and the only effective way to learn a programming language is practicing, instead of studying concepts or writing some testing programs.
No pain, no gain 😂
Remark IV: According to a study, students in computer-science courses learn much more by building large-scale exercises instead of many small-scale test programs, which give fragmented knowledge contrary to solid understanding of the language.

Remark V: Remote work is a trend for IT workers. This course also allows you to learn how to do it by using the VPN (virtual private networks) to connect to our Linux server undcemcs02.und.edu, and having the exercises set up at the server and be accessed from the clients.

Instructor’s qualification: The instructor has more than five years’ experience in programming language research, design, and implementation. He designed and implemented a LISP/PROLOG mixed language system for AI (artificial-intelligence) developers including YACC-like software, UNIX-like editor, LISP compiler, PROLOG compiler, heap storage management system, and POPLOG virtual machine for which both LISP and PROLOG compilers generate code by writing about 20,000 lines of C code.



University of North Dakota Course Description (CSCI 280) —
An introduction to the concept and execution of object-oriented programming, using an appropriate language. Includes an introduction to object creations, classes, inheritance, interfaces, exceptions, overloading, and more.

Java from Wikipedia
Java is a general-purpose programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible. Java applications are typically compiled to bytecode that can run on any Java virtual machine regardless of computer architecture.

Object-Oriented Programming (OOP) from Wikipedia
It is a programming paradigm based on the concept of “objects,” which can contain data (attributes) and code (methods). A feature of objects is an object’s procedures that can access and often modify the data fields of the object with which they are associated. In OOP, computer programs are designed by making them out of objects that interact with one another.

Java Platform, Standard Edition (Java SE) —


Internet-Enabled Java System Construction Steps —