‼️ GitHub Classroom Assignment Link ‼️

Background

You’re always going to be learning new things. It might be because you’re in college and taking classes that require you to learn and master certain knowledge and skills, or it might be because you have a hobby for which you’re exploring new ways of engaging. And after college, you’ll be in a constant state of learning in whatever role you enter. (If you think learning ends after college graduation, think again…). Many people incorporate all of the notes they take and research content they gather into a Personal Knowledge Management (PKM) tool. Some examples of PKM tools you may already know are Notion, Obsidian, Roam Research, and OneNote. Take a moment to research these tools to ensure you understand the general concept.

One common aspect of learning something is taking notes. You’ve probably already started taking notes in CS3500, and you likely have lots of notes from classes you’ve taken in the past. As we all know, there are countless strategies that one can employ in note-taking. There’s the Cornell Method, the Visual Notes method, among others. A somewhat modern note taking strategy encourages the learner to use Markdown to organize text files of content. Markdown has the benefits of being simple to understand for both humans and computers, based in plain text files (as opposed to locked away in some proprietary file format or even more hidden somewhere in the cloud) and supports quick annotations as you type.

Consider this scenario… you walk into class, fire up your favorite text editor, open a blank file and tap out the following as the professor is lecturing, and save it in a file named 03-arrays.md after class.

# Java Arrays
- [[An **array** is a collection of variables of the same type]], referred to 
by a common name. 
- In Java, arrays are objects, and must be created dynamically (at runtime).

## Declaring an Array
- [[General Form: type[] arrayName;]]
- ex: int[] myData;

- The above only creates a reference to an array object, but no array has
actually been created yet. 

## Creating an Array (Instantiation)
- [[General form:  arrayName = new type[numberOfElements];]]
- ex: myData = new int[100];

- Data types of the reference and array need to match. 
- [[numberOfElements must be a positive Integer.]]
- [[Gotcha: Array size is not modifiable once instantiated. ]]

... more brilliance captured... 

Even if you’re not an expert in Markdown, you can get a general sense of what is happening by simply looking at the example above. But let me draw your attention to a few specific things about Markdown

<aside> <img src="/icons/new-alert_red.svg" alt="/icons/new-alert_red.svg" width="40px" /> Side Note: For the purpose of PA01 and PA02, we are using a simplified version of standard Markdown. So, if you’re already familiar with markdown, note that our CS3500 version doesn’t contain all the various elements of standard Markdown.

</aside>

When I paste the Java Arrays notes from above into my own PKM System (I use Obsidian), it gets rendered to look like the following:

Screenshot 2023-05-03 at 8.38.19 AM.png

But, it is really just that markdown text that Obsidian is rendering to look this way.

Project Requirements

Don’t worry, we aren’t going to ask you to build a full-featured markdown-based PKM system (yet…). For PA01, you’re going to implement a tool that will condense a collection of Markdown files into a single-file study guide that you can use to review later (perhaps to study for an exam or job interview).