COMPUTER PROGRAMMING 2

Course Description


The course covers advanced topics in computer programming using general-purpose programming language to solve computing problems. The emphasis of this course is to train students to design, implement, test, and debug programs intended to solve computing problems by implementing advanced programming constructs.


Specification, this course will use the Python programming language to introduce students to advanced topics in computer programming. It will include topics in object-oriented programming (OOP), advanced string manipulation using a regular expression (regex), accessing files and databases, data analysis and data visualization, and graphical user interface (GUI).

JOHN LEO D. ECHEVARIA

Bachelors of Science in Computer Science 

Specialization Track in Software Engineering I

Growing up in Manila, I was always fascinated by the power of technology and its ability to change the world. Back in high school, I had the opportunity to join a contest and create a website for our school publishing team, and to my surprise, we were able to reach regionals. That was my first introduction to programming and since then, I fell in love with it. So, when it came time to choose a college, I knew that I wanted to pursue a degree in computer science. But I also knew that to truly excel in this field, I needed to immerse myself in a new environment where I could focus on my studies and gain hands-on experience.


That's why I made the decision to move to Quezon Province to attend college. It's been a big transition, but I'm excited to be here and to be taking classes that will help me achieve my goal of becoming a competent computer science graduate. I'm determined to work hard and make the most of this opportunity.


When I'm not studying, I love to spend my time painting and creating mini programming projects. I believe that art and technology go hand in hand, and I find that these hobbies help me stay creative and inspired. They also let me pursue my interest in both fields and make a balance between the technical and creative side of my life. I also believe that nothing is impossible with hard work and determination, and I'm excited to see what the future holds for me.

FacebookInstagramLinkedInGitHub

Course Learning Outcomes and Performance Indicators 

PRELIM COURSE OUTCOMES

COURSE OUTCOME 1,2, and 3 PERFORMANCE INDICATOR

EXPECTATIONS

In this course, I expected to learn the basic principles and theories of Object-Oriented Programming in Python such as Encapsulation, Abstraction, and Polymorphism. 

In addition, I also expected to learn about RegEx and how is it different and more complex than simply searching for a specific string combinations.

Lastly, I also expected to learn about the basic CRUD Operations: Create, Read, Update, and Delete and how I would apply and make use of it in a Python Program.

APPLICATION

Prelim Output for Course Outcome 1, 2, and 3

Program Description:


EventGenie is a software that acts as an event planning assistant, helping users to sort and organize events. It extracts information from invitations stored in a specified folder and compiles it into a summary. 

The software uses regular expressions to identify patterns in the text and returns important details such as the event name, date and time, location, sender's email, and phone number. The summary can be saved as a '.txt' file, '.csv' file, or added directly to the Outlook calendar as a schedule using the 'win32com.client' module.
With EventGenie, event planning becomes easier and more efficient as it sorts the events from earliest to latest. This makes it easy for users to prioritize and stay on top of their schedule. 

'Events' Class:

'Events' Class Description:

This is a Python script that defines a class Events, which is designed to extract information from text representing an event invitation.

The class has several methods that use regular expressions to extract the event name, date, time, location, and sender's email and phone number from the text. These methods include:


The class also has several other methods:

Main Program:

Main Program Description:


This code is the main program that uses the Events class to read invitation text files from a specified directory, extract information from them, and display that information to the user.
Here's a summary of the main functions in the code:
  • read(): checks if summary files already exist for invitations (in either CSV or text format) and if so, asks the user if they want to read them. If the user agrees, the function prints out the contents of the file.
  • folderChange(): prompts the user to enter the name of a new folder to search for invitations in. If the folder exists, it returns the folder name. If it doesn't exist, it prints an error message and asks the user to enter a new folder name.
  • exit(): prints a goodbye message and exits the program.
  • main(): prints a menu of options to the user and prompts the user to choose an option. If the user chooses to create a new summary, it calls start_extract() to extract information from the invitation files. If the user chooses to change the folder name, it calls folderChange() to prompt the user for a new folder name. If the user chooses to exit, it calls exit() to exit the program.
  • start_extract(folder_path="Invitations"): extracts information from invitation files in the specified folder (default is "Invitations"). It first creates a list of Events objects by iterating over the files in the folder and extracting information from each file using the Events class. It then prompts the user to sort the events by date, and if the user chooses to do so, it sorts the event list. Finally, it presents a menu of options to the user, allowing them to print out the summary of the events, save the summary as a text or CSV file, create a schedule in an Outlook calendar, or exit the program.

Sample '.txt' Invitations Used in the Program:

Prelim Output Reflection

In this Prelim Term Period, I have learned essential programming skills such as the basics of OOP and its principles, RegEx operations, and CRUD operations. I have applied these skills to create EventGenie, an event planner assistant that utilizes OOP by creating 'Event' objects with information fetched from invitations using RegEx, and performs CRUD operations to read, create, and update summary files.
These skills and knowledge can contribute greatly to my career prospect as an IT professional, particularly as a software engineer. Object-Oriented Programming is an essential knowledge for programmers because it provides a flexible way to organize and structure code, making it easier to develop, maintain, and extend in the future. Additionally, I have also learned RegEx, which can be used for data analysis, a valuable skill to have in the field of IT.
However, I did face challenges while working on this project, such as determining how to implement OOP to represent events as an object with certain attributes and methods. Additionaly, I also struggled in figuring out how to connect the program to the Outlook Calendar app and create appointments in it. I overcame these challenges by visualizing which part of the events are necessary and what functions would I like for the events to have. I have also used chatGPT to give me a rough idea on how I can use the 'win32com' module in accessing the Outlook app and creating appointments in it.
While I'm happy with the success of my project, I'm aware that there's always room for improvements. In the future, I have plans to create a graphical user interface for the program and integrate Google Email API to enhance its functionality. By doing so, the user experience will be more straightforward, and users will have an easier time accessing and organizing data, particularly since it will be directly connected to their GMail accounts.
Additionally, since the program is connected to GMail, I believe it would be useful to add the functionality of automatically creating emails to express the inability to attend events because it's not always possible to attend every event, so having this feature would make it more convenient for users to communicate that they can't attend certain events.
Overall, working on this project has taught me valuable skills and provided me with knowledge that I believe would be beneficial to my career as an IT professional. I'm excited about the potential to continue improving the program and to see where this project takes me in the future.

On-Development Planned Features