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: 11:15am – 12:05am, MoWeFr Classroom: Harrington Hall 108
Class # (on-campus: 280-01): 36310 Class # (on-line: 280-02): 36311
 
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. Students can watch the video clips anytime they want.
 
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/28
08/30
1. Introduction to CSCI 280    
  1.1 Course outline  
  1.2 Object-oriented programming (OOP)    
  1.3 C++ vs Java    
2 09/04
09/06
2. Programming Exercise I    
  2.1 Specifications    
  2.2 Step-by-step construction    
  2.3 Software and tools to be used    
09/04  Last day to add a course or drop without record — 100% refund
 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.
   
09/02
Holiday, Labor Day (Monday) — no classes
   
3 09/09
09/11
09/13
3. Introduction to Java    
  3.1 A hello-world Java program    
  3.2 Java components    
  3.3 Java built-in packages    
4 09/16
09/18
09/20
4. Basic Syntax    
  4.1 My first Java program    
  4.2 Naming conventions    
  4.3 Variables    
5 09/23
09/25
09/27
5. Programming Exercise II    
  5.1 Specifications EX I  
  5.2 Step-by-step construction    
  5.3 CGI (Common Gateway Interface)    
6 09/30
10/02
10/04
6. Files and I/O    
  6.1 Arrays    
  6.2 Files    
  6.3 Input and output    
7 10/07
10/11
7. Basic Syntax (Cont.)    
  7.1 Data types    
  7.2 Operators    
  7.3 User input    
10/09
Exam I (for both on-campus and on-line students; 6:30pm – 8:30pm, Wednesday)
   
8 10/14
10/16
10/18
8. Non-Primitive Data Types    
  8.1 Number class EX II  
  8.2 Character and String classes    
  8.3 Boolean class    
9 10/21
10/23
10/25
9. Control Structures    
  9.1 Decision making    
  9.2 The if statements    
  9.3 The switch statements    
10 10/28
10/30
11/01
10. Loops and Exceptions    
  10.1 The while loop    
  10.2 The for loop    
  10.3 Exceptions    
11 11/04
11/06
11/08
11. Classes and Objects    
  11.1 Classes    
  11.2 Objects    
  11.3 Methods    
12 11/13
11/15
12. Classes and Objects (Cont.)    
  12.1 Constructors EX III  
  12.2 Member methods    
  12.3 Accessing methods    
11/15  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/11
Holiday, Veteran’s Day (Friday) — no classes
   
13 11/18
11/22
13. Inheritance and Association    
  13.1 Inheritance EX III  
  13.2 Aggregation    
  13.3 Composition    
11/20
Exam II (for both on-campus and on-line students; 06:30pm – 08:30pm, Wednesday)
   
14 11/25 14. Abstraction and Encapsulation    
  14.1 Abstraction    
  14.2 Encapsulation    
  14.3 Interfaces and packages    
11/27
11/28
11/29
Holidays, Thanksgiving Recess (WeThFr) — no classes
   
15 12/02
12/04
12/06
15. Polymorphism, Overloading, and Overriding    
  15.1 Polymorphism    
  15.2 Overloading    
  15.3 Overridding    
16 12/09
12/11
16. Miscellaneous Java Topics    
  16.1 Generics    
  16.2 Collection and ArrayList    
  16.3 Wrap-up EX IV  
17 12/18
Final exam (for both on-campus and on-line students; 06:30pm – 08:30pm, Wednesday)
   
18 12/24 Grades posted before noon, Tuesday    

Top 10 Most Popular Programming Languages in 2024 according to TechRepublic are given as follows:

  1. Python
  2. C++
  3. C
  1.  Java 
  2. C##
  3. JavaScript
  1. Go
  2. SQL
  1. Visual Basic
  2. Fortran


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: 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 III: 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 IV: 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 —