# Resources
Project Header
At the top of the file containing your program's main() method, place an `external' block comment containing the following content.
```java
/*=============================================================================
| Assignment: Program #[n]: [Assignment Title]
| Author: [Your Name (Your E-mail Address)]
|
| Course: Computer Science A
| Instructor: [title, first-initial of the given name, Surname (Ex. Dr. J. Smith) ]
| Due Date: [Due Date and Time]
|
| Description: [Describe the program's goal, IN DETAIL.]
|
| Language: Java version 8
| Ex. Packages: [List names and sources of all external packages
| required by this program.]
|
| Deficiencies: [If you know of any problems with the code, provide
| details here, otherwise clearly state that you know
| of no unsatisfied requirements and no logic errors.]
*===========================================================================*/
```
| | CSA Topics | MCQ | FRQ | Project |
| :---: | :---- | :---: | :---: | :----: |
| Week 1 | **Orientation & Structure** | | |
| Week 1 | 1.1 Why Programming? Why Java? | MCQ | |
| Week 1 | 1.2 Variables and Data Types? | MCQ | |
| Week 2 | 1.3 Expressions and Assignment Statements | MCQ | |
| Week 2 | 1.4 Compound Assignment Operators | MCQ | |
| Week 2 | 1.5 Casting and Ranges of Variables | MCQ | |
| **TBD** | Unit Exam | MCQ | | Yes |
| Week 3 | 3.2 if Statements and Control Flow | MCQ | |
| Week 3 | 3.3 if-else Statements | MCQ | |
| Week 3 | 3.4 else if Statements | MCQ | |
| Week 4 | 3.1 Boolean Expressions | MCQ | |
| Week 4 | 3.5 Compound Boolean Expressions | MCQ | FRQ |
| Week 4 | 3.6 Equivalent Boolean Expressions | MCQ | |
| Week 5 | 3.7 Comparing Objects | MCQ | FRQ |
| **TBD** | Unit Exam | MCQ | FRQ | Yes |
| Week 5 | 2.1 Objects: Instances of Classes | MCQ | |
| Week 5 | 2.2 Creating and Storing Objects (Instantiation) | MCQ | |
| Week 6 | 2.3 Calling a Void Method | MCQ | |
| Week 6 | 2.4 Calling a Void Method with Parameters | MCQ | |
| Week 6 | 2.5 Calling a Non-Void Method | MCQ | |
| Week 7 | 2.6 String Objects: Concatenation, Literals, and More | MCQ | |
| Week 7 | 2.7 String Methods | MCQ | |
| Week 7 | 2.8 Wrapper: Classes Integer and Double | MCQ | |
| Week 8 | 2.9 Using the Math Class | MCQ | FRQ |
| **TBD** | Unit Exam | MCQ | FRQ | Yes |
| Week 8 | 4.1 while Loops | MCQ | |
| Week 8 | 4.2 for Loops | MCQ | |
| Week 8 | 4.3 Developing Algorithms Using Strings | MCQ | FRQ |
| Week 9 | 4.4 Nested Iteration | MCQ | FRQ |
| Week 9 | 4.5 Informal Code Analysis | MCQ | |
| **TBD** | Unit Exam | MCQ | FRQ | Yes |
| Week 10 | 5.1 Anatomy of a Class | MCQ | |
| Week 10 | 5.2 Constructors | MCQ | |
| Week 10 | 5.3 Documentation with Comments | MCQ | |
| Week 11 | 5.4 Accessor Methods | MCQ | |
| Week 11 | 5.5 Mutator Methods | MCQ | FRQ |
| Week 11 | 5.6 Writing Methods | MCQ | |
| Week 12 | 5.7 Static Variables and Methods | MCQ | |
| Week 12 | 5.8 Scope and Access | MCQ | FCQ |
| Week 12 | 5.9 this Keyword | MCQ | |
| Week 12 | 5.10 Ethical and Social Implications of Computing Systems | | |
| **TBD** | Unit Exam | MCQ | FRQ | Yes |
| Week 13 | 9.1 Creating Superclasses and Subclasses | | |
| Week 13 | 9.2 Writing Constructors for Subclasses | MCQ | |
| Week 14 | 9.3 Overriding Methods | MCQ | |
| Week 14 | 9.4 super Keyword | MCQ | |
| Week 15 | 9.5 Creating References Using Inheritance Hierarchies | MCQ | |
| Week 15 | 9.6 Polymorphism | MCQ | FRQ |
| Week 16 | 9.7 Object Superclass | MCQ | FRQ |
| **TBD** | Unit Exam | MCQ | FRQ | Yes |
| Week 17 | 6.1 Array Creation and Access | MCQ | |
| Week 17 | 6.2 Traversing Arrays | MCQ | |
| Week 18 | 6.3 Enhanced for Loop for Arrays | MCQ | FRQ |
| Week 18 | 6.4 Developing Algorithms Using Arrays | MCQ | FRQ |
| **TBD** | Unit Exam | MCQ | FRQ | |
| | ----------------------- **Semester 1 Ends** ----------------------- | | |
| Week 19 | 7.1 Introduction to ArrayList | MCQ | |
| Week 19 | 7.2 ArrayList Methods | MCQ | |
| Week 20 | 7.3 Traversing ArrayLists | MCQ | |
| Week 20 | 7.4 Developing Algorithms Using ArrayLists | MCQ | |
| Week 21 | 7.5 Searching | MCQ | FRQ |
| Week 21 | 7.6 Sorting | MCQ | |
| Week 21 | 7.7 Ethical Issues Around Data Collection | | |
| **TBD** | Unit Exam | MCQ | FRQ | Yes |
| Week 22 | 8.1 2D Arrays | MCQ | |
| Week 22 | 8.2 Traversing 2D Arrays | MCQ | FRQ |
| **TBD** | Unit Exam | MCQ | FRQ | Yes |
| Week 23 | 10.1 Recursion | MCQ | FRQ |
| Week 23 | 10.2 Recursive Searching and Sorting | MCQ | |
| **TBD** | Unit Exam | MCQ | FRQ | |
| Week 24 | White Tower Final Project | | | Yes |
| | Practice Exam 2014 | MCQ | FRQ |
| | Practice Exam 2015 | MCQ | FRQ |
| | Practice Exam 2020 | MCQ | FRQ |
### Replit.com
By default, Replit uses Main as the main class. To change the Main class name to a class name of your choosing, create a new file within replit and call it .repl. Within the file type the following:
```
run="sh main.sh"
javac NewClass.java # whatever that file is java NewClass
```
Lastly, make sure that the Main class is label correctly! In this instance it will be called NewClass.
![replit](https://user-images.githubusercontent.com/12989939/186237117-a3565f6b-bc38-4edd-be59-f787ed233668.PNG)
Another method that you may find useful within replit is that you can create different programs and have them execute on the Main.java page.
```java
public class Main {
public static void main(String[] args) {
ProgramOne.main(args);
ProgramTwo.main(args);
ProgramThree.main(args);
}
}
```
Example of this in use can be found [here](https://replit.com/@jonvirak/Array-Creation#Main.java). Use this format for Assignment 2 and all future programs where you are asked to create two different programs.
```java
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.Period;
public class DateTimeExample {
public static void main(String[] args) {
printLocalDate();
printLocalTime();
printLocalDateTime();
printFormattedDateTime();
calculatePeriod();
}
// Method to demonstrate LocalDate
public static void printLocalDate() {
LocalDate date = LocalDate.now();
System.out.println("Current Date: " + date);
}
// Method to demonstrate LocalTime
public static void printLocalTime() {
LocalTime time = LocalTime.now();
System.out.println("Current Time: " + time);
}
// Method to demonstrate LocalDateTime
public static void printLocalDateTime() {
LocalDateTime dateTime = LocalDateTime.now();
System.out.println("Current Date and Time: " + dateTime);
}
// Method to demonstrate formatting LocalDateTime
public static void printFormattedDateTime() {
LocalDateTime dateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);
System.out.println("Formatted Date and Time: " + formattedDateTime);
}
// Method to demonstrate Period
public static void calculatePeriod() {
LocalDate startDate = LocalDate.of(2020, 1, 1);
LocalDate endDate = LocalDate.now();
Period period = Period.between(startDate, endDate);
System.out.println("Period between " + startDate + " and " + endDate + ": " + period.getYears() + " years, " + period.getMonths() + " months, and " + period.getDays() + " days");
}
}
```
### Date and Time Functions
| Name | Description |
| :---: | :----: |
| ADDDATE() | Add time values (intervals) to a date value |
| ADDTIME() | Add time |
| CONVERT_TZ() | Convert from one time zone to another |
| CURDATE() | Return the current date |
| CURRENT_DATE(),
CURRENT_DATE | Synonyms for CURDATE() |
| CURRENT_TIME(),
CURRENT_TIME | Synonyms for CURTIME() |
| CURRENT_TIMESTAMP(),
CURRENT_TIMESTAMP | Synonyms for NOW() |
| CURTIME() | Return the current time |
| DATE() | Extract the date part of a date or datetime expression |
| DATE_ADD() | Add time values (intervals) to a date value |
| DATE_FORMAT() | Format date as specified |
| DATE_SUB() | Subtract a time value (interval) from a date |
| DATEDIFF() | Subtract two dates |
| DAY() | Synonym for DAYOFMONTH() |
| DAYNAME() | Return the name of the weekday |
| DAYOFMONTH() | Return the day of the month (0-31) |
| DAYOFWEEK() | Return the weekday index of the argument |
| DAYOFYEAR() | Return the day of the year (1-366) |
| EXTRACT() | Extract part of a date |
| FROM_DAYS() | Convert a day number to a date |
| FROM_UNIXTIME() | Format Unix timestamp as a date |
| GET_FORMAT() | Return a date format string |
| HOUR() | Extract the hour |
| LAST_DAY | Return the last day of the month for the argument |
| LOCALTIME(),
LOCALTIME | Synonym for NOW() |
| LOCALTIMESTAMP,
LOCALTIMESTAMP() | Synonym for NOW() |
| MAKEDATE() | Create a date from the year and day of year |
| MAKETIME() | Create time from hour, minute, second |
| MICROSECOND() | Return the microseconds from argument |
| MINUTE() | Return the minute from the argument |
| MONTH() | Return the month from the date passed |
| MONTHNAME() | Return the name of the month |
| NOW() | Return the current date and time |
| PERIOD_ADD() | Add a period to a year-month |
| PERIOD_DIFF() | Return the number of months between periods |
| QUARTER() | Return the quarter from a date argument |
| SEC_TO_TIME() | Converts seconds to 'hh:mm:ss' format |
| SECOND() | Return the second (0-59) |
| STR_TO_DATE() | Convert a string to a date |
| SUBDATE() | Synonym for DATE_SUB() when invoked with three arguments |
| SUBTIME() | Subtract times |
| SYSDATE() | Return the time at which the function executes |
| TIME() | Extract the time portion of the expression passed |
| TIME_FORMAT() | Format as time |
| TIME_TO_SEC() | Return the argument converted to seconds |
| TIMEDIFF() | Subtract time |
| TIMESTAMP() | With a single argument, this function returns the date or datetime expression; with two arguments, the sum of the arguments |
| TIMESTAMPADD() | Add an interval to a datetime expression |
| TIMESTAMPDIFF() | Return the difference of two datetime expressions, using the units specified |
| TO_DAYS() | Return the date argument converted to days |
| TO_SECONDS() | Return the date or datetime argument converted to seconds since Year 0 |
| UNIX_TIMESTAMP() | Return a Unix timestamp |
| UTC_DATE() | Return the current UTC date |
| UTC_TIME() | Return the current UTC time |
| UTC_TIMESTAMP() | Return the current UTC date and time |
| WEEK() | Return the week number |
| WEEKDAY() | Return the weekday index |
| WEEKOFYEAR() | Return the calendar week of the date (1-53) |
| YEAR() | Return the year |
| YEARWEEK() | Return the year and week |