CIS 598 Textbook

This is the textbook for CIS 598 - Computer Science Project.

Course Description: Directed studies: selection, investigation and report on some topic not covered in prior courses; may include an implementation and/or experimentation component; may be done in collaboration with other students. Completion of a plan, two reviews, and a final report with literature review and project evaluation.

Prerequisite: CIS 560 and senior standing in computer science. Students may enroll in CIS courses only if they have earned a grade of C or better for each prerequisite to those courses.

Credits: 3

Subsections of CIS 598 Textbook

Chapter 0

Introduction

Welcome to CIS 598!

Subsections of Introduction

Spring 2024 Syllabus

CIS 596 - Entrepreneurial Computer Science Project - Spring 2024

CIS 598 - Computer Science Project - Spring 2024

Previous Versions

Instructor Contact Information

  • Instructor: Dr. Scott DeLoach (sdeloach AT ksu DOT edu)
  • Office: DUE 2184
  • Phone: (785) 532-6350
  • Website: https://people.cs.ksu.edu/~sdeloach/
  • Office Hours: TBA

  • Instructor: Russell Feldhausen (russfeld AT ksu DOT edu)
    I use he/him pronouns. Feel free to share your own pronouns with me, and I’ll do my best to use them!
  • Office: DUE 2213, but I mostly work remotely from Kansas City, MO
  • Phone: (785) 292-3121 (Call/Text)
  • Website: https://russfeld.me
  • Virtual Office Hours: By appointment via Zoom. Schedule a meeting at https://calendly.com/russfeld

Preferred Methods of Communication:

  • Email: Students should email questions directly to the instructors. We will try to respond within one business day.
  • Chat: You may find instructors online via the CS department Discord server and Microsoft Teams. We will try to respond when we can, but if you don’t get a response please email us.
  • Phone/Text: Emergencies only! We will do our best to respond as quickly as we can.

Prerequisites

  • CIS 596: CIS 560, ENTRP 340 and senior standing in computer science. Students may enroll in CIS courses only if they have earned a grade of C or better for each prerequisite to those courses.
  • CIS 598: CIS 560 and senior standing in computer science. Students may enroll in CIS courses only if they have earned a grade of C or better for each prerequisite to those courses.

Course Overview

Directed studies: selection, investigation and report on some topic not covered in prior courses; may include an implementation and/or experimentation component; may be done in collaboration with other students. Completion of a final report with literature review and project evaluation.

Course Description

In this course, students will complete a project, either individually or in small groups, under the supervision of a faculty advisor. The project will integrate concepts from prior courses, but also include a growth component including material not covered in prior courses.

Students will create and deliver several presentations throughout the semester on the status of the project, and will also be responsible for developing design documents and other artifacts. At the end of the semester, students will present their work in a public presentation graded by the faculty advisor.

Major Course Topics

  • Software Engineering methodologies
  • Software Design Documents & Artifacts
  • Public Speaking & Presentation of Technical Information
  • Planning and Iterating on a Large Software Project
  • Taking a Project from Idea to Completion
  • Demonstrating Independent Learning & Continuing Growth in Computer Science

Student Learning Outcomes

After completing this course, a successful student will be able to:

  • Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions
  • Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline
  • Communicate effectively in a variety of professional contexts
  • Apply computer science theory and software development fundamentals to produce computing-based solutions

Course Structure

The course meets in person Mondays from 3:30 - 4:20 PM in DUE 0093. At the beginning of the semester, students will be assigned to one of those two days as their official course session. Students should attend all in-person course sessions to which they are assigned. In-person sessions will primarily be used for student presentations throughout the semester. There may also be one or two Wednesdsay or Friday in-person class periods for presentations. These dates will be clearly announced in advance.

On weeks where Monday falls on a university holiday, such as Labor Day or President’s Day, the course will instead meet in person on Wednesdays of the same week.

Course work hours will be Wednesdays and Fridays from 3:30 - 4:20 PM online via Zoom. Attendance at these work hours is optional, but highly recommended. It is a good time to work on your project, ask questions, and get advice. The instructors will be available during these times to answer questions about the class or provide project assistance.

The Work

There is no shortcut to becoming a great programmer. Only by doing the work will you develop the skills and knowledge to make you a successful computer scientist. This course is built around that principle, and gives you ample opportunity to do the work, with as much support as we can offer.

Deliverables

  • Initial Writeup & Feature List - typically early in the semester, students will submit an initial writeup detailing their project, identifying a faculty advisor, and listing the features for their project.
  • Project Overview & Requirements Presentation - typically during the first and second month of the semester, each student will give a short 8-10 minute presentation introducing their chosen project, and discuss the requirements needed to complete the project.
  • Project Design Presentation - typically during the third and fourth month of the semester, each student will give a short 8-10 minute presentation discussing the design of their project. This should include various relevant design artifacts, such as UML diagrams, GUI mockups, API specifications, and database ER diagrams.
  • Final Project
    • Advertisement - students will develop a single slide/image and abstract to be used for advertising their final project presentations.
    • Presentation - during the final weeks of the semester, students will schedule a final project presentation. That presentation will be advertised through the department and given publicly. The student’s faculty advisor will grade the final project presentation.
    • Artifacts - at the end of the semester, students must submit the full source code of their project, presentation materials, design documents, and a short writeup detailing the project, it’s completion status, and any future work to be done should another student choose to continue and build upon the project.

Grading

Since this is a project-based course with few deliverables, grading will be handled differently than most other college courses. Your final letter grade will reflect your overall performance in the course, including attendance, in-class presentations, public presentations, adherence to timelines, consistent progress throughout the semester, and the quality of the final project artifacts. Grading will be done in consultation between course instructors and a student’s faculty advisor.

A rough estimate of the relative grading importance of each deliverable is given below:

  • 30% - Completion of Initial Artifacts and Presentations; In-Class Attendance and Adherence to Deadlines
  • 70% - Final Project Presentation & Artifacts

Specifications Grading

The two in-class presentations will be graded using specifications grading. Put simply, the instructors will rate how well the presentation meets the specifications given and the expectations of the instructors.Therefore, students will be given one of the following four ratings:

  1. Exceeds Expectations
  2. Meets Expectations
  3. Needs Revision
  4. Incomplete

Students who receive a Needs Revision or Incomplete rating will be given one chance to redo the presentation during one of the online course work hours later that week.

Grade Letter Deductions

Since this is a senior-level course, points will not be given for things such as attendance and meeting deadlines, since those are expected of students at this level. However, failure to meet these expectations may result in a grade letter deduction at the end of the semester at the sole discretion of the instructors:

  • Identify a project topic and faculty advisor before the deadline.
  • Attend at least 80% of the in-class meeting times.
  • Give a presentation on the scheduled date.
  • Submit the final project advertisement by the deadline.
  • Submit the final project artifacts by the deadline.

Reasonable accommodations will be made in case of unforeseen emergencies or university-excused absences. It is always best to reach out to the instructors as soon as you are aware of a situation that may require accommodation.

Collaboration Policy

In general, students are expected to work independently on a project unless given permission from the instructors. Team projects are welcomed, but come with additional expectations to ensure that each student participates fully and the project is appropriately scoped.

Since this is a project course, it is likely that some code in your project may come from other sources, such as a starter project or documentation. Students are expected to document each instance of code taken from another source through code comments marking the relevant location. The majority of the final project should represent the student’s own work.

Late Work

As discussed above, students are expected to adhere to course deadlines. Failure to meet those deadlines may result in a letter grade deduction at the end of the semester.

If you have extenuating circumstances, please discuss them with the instructor as soon as they arise so other arrangements can be made. If you find that you are getting behind in the class, you are encouraged to speak to the instructor for options to get back on track.

Incomplete Policy

Students should strive to complete this course in its entirety before the end of the semester in which they are enrolled. However, since retaking the course would be costly and repetitive for students, we would like to give students a chance to succeed with a little help rather than immediately fail students who are struggling.

If you are unable to complete the course in a timely manner, please contact the instructor to discuss an incomplete grade. Incomplete grades are given solely at the instructor’s discretion. See the official K-State Grading Policy for more information. In general, poor time management alone is not a sufficient reason for an incomplete grade.

Unless otherwise noted in writing on a signed Incomplete Agreement Form, the following stipulations apply to any incomplete grades given in this course:

  1. Students who request an incomplete will have their final grade capped at a C.
  2. Students will be given a maximum of 8 calendar weeks from the end of the enrolled semester to complete the course. It is expected that students have completed at least half of the course in order to qualify for an incomplete.

Students will make use of GitHub or GitLab for source code management.

Students may use their choice of IDEs and software development platforms. Many of them are available in the Computer Science Department’s labs. If a particular software or framework is needed but cannot be acquired, consult with the instructors.

Subject to Change

The details in this syllabus are not set in stone. Due to the flexible nature of this class, adjustments may need to be made as the semester progresses, though they will be kept to a minimum. If any changes occur, the changes will be posted on the Canvas page for this course and emailed to all students.

Standard Syllabus Statements

Info

The statements below are standard syllabus statements from K-State and our program. The latest versions are available online here.

Academic Honesty

Kansas State University has an Honor and Integrity System based on personal integrity, which is presumed to be sufficient assurance that, in academic matters, one’s work is performed honestly and without unauthorized assistance. Undergraduate and graduate students, by registration, acknowledge the jurisdiction of the Honor and Integrity System. The policies and procedures of the Honor and Integrity System apply to all full and part-time students enrolled in undergraduate and graduate courses on-campus, off-campus, and via distance learning. A component vital to the Honor and Integrity System is the inclusion of the Honor Pledge which applies to all assignments, examinations, or other course work undertaken by students. The Honor Pledge is implied, whether or not it is stated: “On my honor, as a student, I have neither given nor received unauthorized aid on this academic work.” A grade of XF can result from a breach of academic honesty. The F indicates failure in the course; the X indicates the reason is an Honor Pledge violation.

For this course, a violation of the Honor Pledge will result in sanctions such as a 0 on the assignment or an XF in the course, depending on severity. Actively seeking unauthorized aid, such as posting lab assignments on sites such as Chegg or StackOverflow, or asking another person to complete your work, even if unsuccessful, will result in an immediate XF in the course.

This course assumes that all your course work will be done by you. Use of AI text and code generators such as ChatGPT and GitHub Copilot in any submission for this course is strictly forbidden unless explicitly allowed by your instructor. Any unauthorized use of these tools without proper attribution is a violation of the K-State Honor Pledge.

We reserve the right to use various platforms that can perform automatic plagiarism detection by tracking changes made to files and comparing submitted projects against other students’ submissions and known solutions. That information may be used to determine if plagiarism has taken place.

Students with Disabilities

At K-State it is important that every student has access to course content and the means to demonstrate course mastery. Students with disabilities may benefit from services including accommodations provided by the Student Access Center. Disabilities can include physical, learning, executive functions, and mental health. You may register at the Student Access Center or to learn more contact:

Students already registered with the Student Access Center please request your Letters of Accommodation early in the semester to provide adequate time to arrange your approved academic accommodations. Once SAC approves your Letter of Accommodation it will be e-mailed to you, and your instructor(s) for this course. Please follow up with your instructor to discuss how best to implement the approved accommodations.

Expectations for Conduct

All student activities in the University, including this course, are governed by the Student Judicial Conduct Code as outlined in the Student Governing Association By Laws, Article V, Section 3, number 2. Students who engage in behavior that disrupts the learning environment may be asked to leave the class.

Mutual Respect and Inclusion in K-State Teaching & Learning Spaces

At K-State, faculty and staff are committed to creating and maintaining an inclusive and supportive learning environment for students from diverse backgrounds and perspectives. K-State courses, labs, and other virtual and physical learning spaces promote equitable opportunity to learn, participate, contribute, and succeed, regardless of age, race, color, ethnicity, nationality, genetic information, ancestry, disability, socioeconomic status, military or veteran status, immigration status, Indigenous identity, gender identity, gender expression, sexuality, religion, culture, as well as other social identities.

Faculty and staff are committed to promoting equity and believe the success of an inclusive learning environment relies on the participation, support, and understanding of all students. Students are encouraged to share their views and lived experiences as they relate to the course or their course experience, while recognizing they are doing so in a learning environment in which all are expected to engage with respect to honor the rights, safety, and dignity of others in keeping with the K-State Principles of Community.

If you feel uncomfortable because of comments or behavior encountered in this class, you may bring it to the attention of your instructor, advisors, and/or mentors. If you have questions about how to proceed with a confidential process to resolve concerns, please contact the Student Ombudsperson Office. Violations of the student code of conduct can be reported using the Code of Conduct Reporting Form. You can also report discrimination, harassment or sexual harassment, if needed.

Netiquette

Info

This is our personal policy and not a required syllabus statement from K-State. It has been adapted from this statement from K-State Global Campus, and theRecurse Center Manual. We have adapted their ideas to fit this course.

Online communication is inherently different than in-person communication. When speaking in person, many times we can take advantage of the context and body language of the person speaking to better understand what the speaker means, not just what is said. This information is not present when communicating online, so we must be much more careful about what we say and how we say it in order to get our meaning across.

Here are a few general rules to help us all communicate online in this course, especially while using tools such as Canvas or Discord:

  • Use a clear and meaningful subject line to announce your topic. Subject lines such as “Question” or “Problem” are not helpful. Subjects such as “Logic Question in Project 5, Part 1 in Java” or “Unexpected Exception when Opening Text File in Python” give plenty of information about your topic.
  • Use only one topic per message. If you have multiple topics, post multiple messages so each one can be discussed independently.
  • Be thorough, concise, and to the point. Ideally, each message should be a page or less.
  • Include exact error messages, code snippets, or screenshots, as well as any previous steps taken to fix the problem. It is much easier to solve a problem when the exact error message or screenshot is provided. If we know what you’ve tried so far, we can get to the root cause of the issue more quickly.
  • Consider carefully what you write before you post it. Once a message is posted, it becomes part of the permanent record of the course and can easily be found by others.
  • If you are lost, don’t know an answer, or don’t understand something, speak up! Email and Canvas both allow you to send a message privately to the instructors, so other students won’t see that you asked a question. Don’t be afraid to ask questions anytime, as you can choose to do so without any fear of being identified by your fellow students.
  • Class discussions are confidential. Do not share information from the course with anyone outside of the course without explicit permission.
  • Do not quote entire message chains; only include the relevant parts. When replying to a previous message, only quote the relevant lines in your response.
  • Do not use all caps. It makes it look like you are shouting. Use appropriate text markup (bold, italics, etc.) to highlight a point if needed.
  • No feigning surprise. If someone asks a question, saying things like “I can’t believe you don’t know that!” are not helpful, and only serve to make that person feel bad.
  • No “well-actually’s.” If someone makes a statement that is not entirely correct, resist the urge to offer a “well, actually…” correction, especially if it is not relevant to the discussion. If you can help solve their problem, feel free to provide correct information, but don’t post a correction just for the sake of being correct.
  • Do not correct someone’s grammar or spelling. Again, it is not helpful, and only serves to make that person feel bad. If there is a genuine mistake that may affect the meaning of the post, please contact the person privately or let the instructors know privately so it can be resolved.
  • Avoid subtle -isms and microaggressions. Avoid comments that could make others feel uncomfortable based on their personal identity. See the syllabus section on Diversity and Inclusion above for more information on this topic. If a comment makes you uncomfortable, please contact the instructor.
  • Avoid sarcasm, flaming, advertisements, lingo, trolling, doxxing, and other bad online habits. They have no place in an academic environment. Tasteful humor is fine, but sarcasm can be misunderstood.

As a participant in course discussions, you should also strive to honor the diversity of your classmates by adhering to the K-State Principles of Community.

SafeZone Ally

I am part of the SafeZone community network of trained K-State faculty/staff/students who are available to listen and support you. As a SafeZone Ally, I can help you connect with resources on campus to address problems you face that interfere with your academic success, particularly issues of sexual violence, hateful acts, or concerns faced by individuals due to sexual orientation/gender identity. My goal is to help you be successful and to maintain a safe and equitable campus.

Discrimination, Harassment, and Sexual Harassment

Kansas State University is committed to maintaining academic, housing, and work environments that are free of discrimination, harassment, and sexual harassment. Instructors support the University’s commitment by creating a safe learning environment during this course, free of conduct that would interfere with your academic opportunities. Instructors also have a duty to report any behavior they become aware of that potentially violates the University’s policy prohibiting discrimination, harassment, and sexual harassment, as outlined by PPM 3010.

If a student is subjected to discrimination, harassment, or sexual harassment, they are encouraged to make a non-confidential report to the University’s Office for Institutional Equity (OIE) using the online reporting form. Incident disclosure is not required to receive resources at K-State. Reports that include domestic and dating violence, sexual assault, or stalking, should be considered for reporting by the complainant to the Kansas State University Police Department or the Riley County Police Department. Reports made to law enforcement are separate from reports made to OIE. A complainant can choose to report to one or both entities. Confidential support and advocacy can be found with the K-State Center for Advocacy, Response, and Education (CARE). Confidential mental health services can be found with Lafene Counseling and Psychological Services (CAPS). Academic support can be found with the Office of Student Life (OSL). OSL is a non-confidential resource. OIE also provides a comprehensive list of resources on their website. If you have questions about non-confidential and confidential resources, please contact OIE at equity@ksu.edu or (785) 532–6220.

Academic Freedom Statement

Kansas State University is a community of students, faculty, and staff who work together to discover new knowledge, create new ideas, and share the results of their scholarly inquiry with the wider public. Although new ideas or research results may be controversial or challenge established views, the health and growth of any society requires frank intellectual exchange. Academic freedom protects this type of free exchange and is thus essential to any university’s mission.

Moreover, academic freedom supports collaborative work in the pursuit of truth and the dissemination of knowledge in an environment of inquiry, respectful debate, and professionalism. Academic freedom is not limited to the classroom or to scientific and scholarly research, but extends to the life of the university as well as to larger social and political questions. It is the right and responsibility of the university community to engage with such issues.

Campus Safety

Kansas State University is committed to providing a safe teaching and learning environment for student and faculty members. In order to enhance your safety in the unlikely case of a campus emergency make sure that you know where and how to quickly exit your classroom and how to follow any emergency directives. Current Campus Emergency Information is available at the University’s Advisory webpage.

Weapons Policy

Kansas State University prohibits the possession of firearms, explosives, and other weapons on any University campus, with certain limited exceptions, including the lawful concealed carrying of handguns, as provided in the University Weapons Policy.

You are encouraged to take the online weapons policy education module to ensure you understand the requirements of the policy, including the requirements related to concealed carrying of handguns on campus. Students possessing a concealed handgun on campus must be lawfully eligible to carry and either at least 21 years of age or a licensed individual who is 18-21 years of age. All carrying requirements of the policy must be observed in this class, including but not limited to the requirement that a concealed handgun be completely hidden from view, securely held in a holster that meets the specifications of the policy, carried without a chambered round of ammunition, and that any external safety be in the “on” position.

If an individual carries a concealed handgun in a personal carrier such as a backpack, purse, or handbag, the carrier must remain within the individual’s exclusive and uninterrupted control. This includes wearing the carrier with a strap, carrying or holding the carrier, or setting the carrier next to or within the immediate reach of the individual.

During this course, you will be required to engage in activities, such as interactive examples or sharing work on the whiteboard, that may require you to separate from your belongings, and thus you should plan accordingly.

Each individual who lawfully possesses a handgun on campus shall be wholly and solely responsible for carrying, storing and using that handgun in a safe manner and in accordance with the law, Board policy and University policy. All reports of suspected violation of the weapons policy are made to the University Police Department by picking up any Emergency Campus Phone or by calling 785-532-6412.

Student Resources

K-State has many resources to help contribute to student success. These resources include accommodations for academics, paying for college, student life, health and safety, and others. Check out the Student Guide to Help and Resources: One Stop Shop for more information.

Student Academic Creations

Student academic creations are subject to Kansas State University and Kansas Board of Regents Intellectual Property Policies. For courses in which students will be creating intellectual property, the K-State policy can be found at University Handbook, Appendix R: Intellectual Property Policy and Institutional Procedures (part I.E.). These policies address ownership and use of student academic creations.

Mental Health

Your mental health and good relationships are vital to your overall well-being. Symptoms of mental health issues may include excessive sadness or worry, thoughts of death or self-harm, inability to concentrate, lack of motivation, or substance abuse. Although problems can occur anytime for anyone, you should pay extra attention to your mental health if you are feeling academic or financial stress, discrimination, or have experienced a traumatic event, such as loss of a friend or family member, sexual assault or other physical or emotional abuse.

If you are struggling with these issues, do not wait to seek assistance.

For Kansas State Salina Campus:

For Global Campus/K-State Online:

  • K-State Online students have free access to mental health counseling with My SSP - 24/7 support via chat and phone.
  • The Office of Student Life can direct you to additional resources.

University Excused Absences

K-State has a University Excused Absence policy (Section F62). Class absence(s) will be handled between the instructor and the student unless there are other university offices involved. For university excused absences, instructors shall provide the student the opportunity to make up missed assignments, activities, and/or attendance specific points that contribute to the course grade, unless they decide to excuse those missed assignments from the student’s course grade. Please see the policy for a complete list of university excused absences and how to obtain one. Students are encouraged to contact their instructor regarding their absences.

© The materials in this online course fall under the protection of all intellectual property, copyright and trademark laws of the U.S. The digital materials included here come with the legal permissions and releases of the copyright holders. These course materials should be used for educational purposes only; the contents should not be distributed electronically or otherwise beyond the confines of this online course. The URLs listed here do not suggest endorsement of either the site owners or the contents found at the sites. Likewise, mentioned brands (products and services) do not suggest endorsement. Students own copyright to what they create.

Subsections of Spring 2024 Syllabus

Getting Started

Slides

The major outcome for this course is a project that demonstrates your skills in computer science, software development, and other areas relevant to your chosen degree program. This page provides an overview that will help you get started on your project.

Research Topic

Starting in Spring 2023, we now have a special track for topics that fall generally under the heading of “research” instead of a software development project. This includes projects that may have a significant experimental component where the focus is less on developing a software project and more about creating software to support a research task. If you feel that your project fits this description, you should skip to the Research Topic page.

Here is a recommended timeline for your project:

  • Week 1: Identify a project, get a project advisor.
  • Week 2: Report your project topic and advisor. Start developing.
  • Week 3: “Hello World” Complete.
  • Weeks 3-8: Overview & Requirements Presentations & First Round of Development.
  • Week 8: Minimum Viable Product (MVP) Complete.
  • Weeks 9-14: Design Presentations & Second Round of Development.
  • Week 14: Schedule Final Presentation & Create Promotional Materials
  • Week 15: Version 1.0 Feature Complete.
  • Weeks 15-16: Final Presentations.
  • Week 16: Submit Final Materials.

Choosing a Topic

The first major step is to identify a possible topic for your project. It should align with your interests in the field, and it may also fit well with previous courses you’ve taken or possibly future career paths. You may also choose to use your project to explore a new topic or framework that you’d like to get experience with.

You are also welcome to choose to try and duplicate an existing program from scratch, putting your own spin on it and writing the code from scratch. For example, you may choose to try and duplicate the underlying code and features for a popular social network - in effect your project is driven by their design, but you have to figure out how to build it and code it yourself.

Finally, if you are having trouble finding a topic, consult the Project Ideas folder on Canvas for project ideas that have been submitted or previous projects that could be continued. You can also chat with the course instructors to get some ideas of a project to consider, or if you have an advisor you’d like to work with, chat with them for some ideas.

Topic Limitations

We do not recommend choosing a project topic that you have no prior knowledge or experience with. For example - do not choose to make a complex video game if you haven’t made a game before, either as part of the class or as an independent project. Likewise, do not choose to develop a single-page web application if you don’t already know HTML, CSS, JavaScript, and the basics of web application development.

Generally students who choose a project topic that requires a large amount of learning end up producing inferior projects simply due to the amount of time spent early in the semester learning the basics. It is best to choose something you already know something about, but would like to explore further.

Features to Consider

As you consider project topics, remember that completed projects must include these two items:

  • Problem/Solution In the initial discussion of the project, you should be able to phrase your project as a solution to a selected problem. For example, you could say that the problem is “a need for accurate record keeping for a winter warming shelter” and that your solution is a “web application that is accessible on mobile devices.”
  • Algorithmic Functionality Each project must include some significant algorithmic component. This means that web applications must do more than just present and store data using the basic CRUD database functions, and video games must have more than just hard-coded levels and enemies. So, be thinking about how you can demonstrate a significant algorithmic component in your project.
Code First

When selecting your project topic, remember that the goal of this project is to develop a large amount of code as part of a software project. So, if you plan on using tools such as a drag & drop UI creator or a visual game engine such as Unity, you still need to make sure that the bulk of the project is code that you’ve written yourself. Any code generated by these tools is not considered a core part of your project since it doesn’t demonstrate your programming skill.

You can demonstrate your skill instead by building UIs directly in code, writing algorithms to automatically generate assets in a video game, or choosing to use a “code-first” UI design or game engine.

Finding an Advisor

Once you’ve identified a project, you’ll need to select a faculty advisor to work with. Throughout the semester, you’ll meet regularly to discuss your project with your faculty advisor, and follow their guidance to produce a quality product.

Typically you want to choose a faculty advisor that is familiar with your project area, since they will be most likely to be able to provide good assistance and feedback as you work on your project.

If you aren’t sure which faculty members may fit well with your project idea, contact the course instructors or consult the information on the CS Faculty webpage.

Advisor Responsibilities

Each advisor approaches senior projects differently, but in general your advisor will typically ask you to do the following:

  • Provide an overview of the project and a list of features to be developed.
  • Meet weekly to provide status updates on the project.
  • Read or review additional information, research papers, etc. related to your project.
  • Share your code and other project artifacts for review
  • Schedule a final project presentation

Initial Artifacts

At the very beginning of your project, you should create a few initial artifacts to start the development process:

  • Writeup: prepare a short, 1 page writeup that describes your project topic. It should give some basic use cases and a rough idea of the architecture or platforms you plan on using in the project. Your writeup must include clear sections containing the following:
    • Problem/Solution A clear statement of a problem that you are trying to solve, and how your project will fill the role as a solution to that problem. There are many ways to approach this statement - consult the course instructors for assistance if you are unsure how to phrase your project in this way.
    • Use Cases A list of a few simple use cases that help describe how users will interact with your project.
    • Algorithmic Functionality A clear statement of the intended algorithmic functionality of your project. Your project must include some algorithmic functionality beyond the basics. For example, a web application should provide more than just the basic CRUD database operations. Likewise, a video game should include some complex algorithmic component such as procedurally-generated terrain or a learning AI beyond just simple, hard-coded content.
    • Student Qualification A clear statement explaining why you are qualified to take on this project. You must describe your background and experience with the chosen project and related technologies. If you have no prior experience, consider choosing a different project.
    • Project Advisor List your project advisor. You must have permission from your advisor confirming that they will supervise your project before submitting!
  • Feature Lists: prepare three sets of feature lists for your project:
    • Minimum Viable Product (MVP) or must haves: these are features that must be present in the project for it to function in the basic sense. It usually doesn’t include much in the way of user interface beyond the basic interactions, and it may be missing some additional items to make it more useable. A project that has these features could be considered a Minimum Viable Product. Typically you want to have these features completed in the first 8 weeks of development.
    • Version 1.0 or should haves: these are features that should be present in the project for it to be considered complete. This would involve additional usability features or links to other APIs as needed. A project with these features would be considered a 1.0 product, and could be used by others. Typically these features are completed in the second 8 weeks of development.
    • Version 2.0 or would like to haves: these are cool features that would be useful to have in a finalized project, but they may be outside the scope of what is achievable in a single semester. The lack of these features should not impact the useability or functionality of the project. Typically these features are simply listed on the “Future Work” portion of the final presentation, but if you complete the project ahead of schedule you may consider adding one or more of these features to the project.
  • Time Management Plan: prepare a detailed time management plan for each week of the semester. This helps ensure that you are able to devote 9 hours each week to this class, and also ensures that you save enough time for other classes and activities.

These artifacts are not “set in stone” and can be easily adjusted throughout the project. For example, you may find that a feature previously on the Version 2.0 list is not critical, and it moves to an earlier list.

Hello World

The next step in creating a successful project is getting to the “Hello World” stage. This typically involves configuring your development environment, creating a new project or downloading an existing project, and confirming that you can successfully build and run the project in its simplest form. Ideally, you should be at the “Hello World” stage of your project no later than week 3, and ideally much sooner. This is especially important if you are learning how to use a new framework, programming language, or tool, as it may require significant work to get to this stage alone.

Once you are at the “Hello World” stage, you are at the point where you can start adding features to your project from the feature lists described above. A great way to think of those feature lists is like the Product Backlog in the agile software methodology - it is a list of project requirements to be completed.

Warning

OneDrive is NOT good for code - use git!

One common issue that students run into in this class is storing their code repository folders in a folder synched with OneDrive causes issues - especially if you use OneDrive to sync your work between multiple systems. This can cause all sorts of headaches since OneDrive wasn’t designed to work well with code, and large projects can result in thousands of text files that need to be constantly synched and updated as you make changes. It is further exacerbated by putting a git repository inside of a OneDrive folder - that is a recipe for your git repository to become corrupted and potentially unrecoverable if a sync error occurs.

Instead, you should always store your code repository folders outside of anything synched to OneDrive (I like to just make a projects folder inside of my profile folder on my system, so the path would be C:\users\russfeld\projects or /home/russfeld/projects) and work from there. Inside of that folder, you should clone your GitHub Classroom repository that has already been set up for you and start working from there. If you’ve already created a project, you’ll need to manually copy the code into that folder and commit it - you can’t push an existing repository to GitHub Classroom without causing major issues.

Also, if you haven’t created a .gitignore file for your project, now is a great time to do so. You should never commit binary files, build artifacts, or external libraries to your GitHub repository - that just causes unnecessary repository bloat and makes things much harder to deal with down the road. There is a GitHub repository full of sample .gitignore files for just about every IDE and framework imaginable - see https://github.com/github/gitignore.

Tip

Project Scale and Scope

One area that many students struggle with is finding a project that has the appropriate scale and scope for a senior project. While there are no clear rules for this, and each student’s situation is different, here are some suggestions for finding an appropriately sized project.

  • The course is 3 credit hours, which roughly equates to an expectation of 9 hours of work each week. Across a 16 week semester, that comes to a total of 144 hours, or just over three and a half 40 hour work weeks if you worked on it full time. You’ll be tracking your hours worked throughout the semester, and that may help you make sure you are spending enough time on your project.
  • If you are working in a new framework or language, you should work completely through the initial tutorial in the first couple of weeks of class. Your finished project must go significantly beyond what is covered in the tutorial.
  • Typically projects will have 3-4 major features that make up the minimum viable product, and another 3-4 major features for version 1.0. Each feature should require 1-2 weeks of effort to implement.
  • Your advisor and course instructors can help you determine if your proposed project has appropriate scope, or if it needs modification. You should consult with them early on in the process, and continually update them on your progress, especially if your planned features change.

Next Steps

At this point, you should be well into development on your project. The next page discusses the weekly work to be performed as part of this project.

Subsections of Getting Started

Weekly Work

Every two weeks throughout the semester, you are expected to do the following:

  • Meet with your project advisor, either in person or via Zoom, to provide them with a clear update on your project.
    • Ideally, you should be showing them code or working prototypes, not just a quick verbal update. They are here to provide help but need to know exactly what is going on in your project.
    • Discuss issues, questions, and next steps with your advisor during the meeting.
  • Record the time worked on the project and tasks completed in Clockify. You should record your time at least weekly, but we encourage you to record time on a daily basis.
  • Update the task board for your project in GitHub.
  • Commit your current code to the GitHub Classroom repository for your project. You may also use a secondary repository if you would like, but your code must be accessible in the GitHub Classroom repository unless other arrangements have been made (i.e. you are working on a project for a company and storing the code in their systems).
  • Fill out the biweekly survey before the due date.

Presentation 1

During the first half of the semester, each student will be scheduled to give a Overview & Requirements Presentation related to the project.

Presentation Outline

The presentation should be roughly 8 minutes in length, and cover the following topics:

  • A brief overview of the project.
  • NEW A small set (2-3) of top level use cases for the project.
    • These use cases should clearly lead to the requirements in the next bullet point.
    • These use cases will inform the testing plan in the next presentation.
  • A discussion of the requirements for each phase of the project.
    • These requirements will inform the overall design of the project in the next presentation.
  • A proposed timeline for project completion.

The first three items roughly correspond to the two initial artifacts discussed on the previous page. The timeline should give rough estimates on when each feature or group of features should be completed.

Additional Content to Include

In addition to the basic outline listed above, here is a list of some other topics you may wish to cover in your presentation, especially if it is relevant to your project:

  • Where the project idea came from.
  • Any existing prior work or inspiration.
  • What problem this project is trying to solve.
  • Tools, Languages, Frameworks, or APIs to be used.
  • Initial Design Diagrams (UML, ER, API, etc.)
  • Initial UI mockups or Website Layout

Sample Presentations

You can find several previous presentations under the Files section on Canvas. Bear in mind that these may or may not be example of good presentations, they are simply ones that have been collected for sharing.

Presentation Tips

In Fall 2022, we recorded a video containing some great tips to improve your presentations. Check it out!

Presentation 2

During the second half of the semester, each student will be scheduled to give a Design Presentation related to the project.

Presentation Outline

The presentation should be roughly 8 minutes in length, and cover the following topics:

  • The chosen design for the project.
    • The chosen design should clearly reflect the overall requirements listed in the previous presentation.
  • A deep overview of design diagrams relevant to the project:
    • UML Diagrams (Class Diagrams, Sequence Diagrams, etc.)
    • Database Entity Relationship Diagrams
    • API Documentation Diagrams
    • UI Mockups & Diagrams
    • Sitemaps for Websites
  • A discussion of how the project will be tested
    • NEW These tests should clearly align with the use cases listed in the first presentation.
Presentation Diagrams

While the focus of this presentation is the design of your project, you don’t need to include an excruciating level of detail in your design diagrams. This makes them very difficult to see and understand in your presentation, and represents a large amount of unnecessary effort on your part. Some suggestions:

  • For UML class diagrams, focus on the overall structure of your application and the relationships between classes, and not on exhaustively listing all attributes and methods in each class. It should be very clear if your application is constructed following a particular design pattern, such as MVC. If your diagram includes many classes, you may wish to start by showing the overall picture and then zooming in on particular areas on later slides to give more detail.
  • For database entity relationship Diagrams, similar to UML class diagrams, focus on the overall structure and relationships between tables, and not exhaustively listing all attributes for each table. You may choose to show a few attributes for each table, or include simplified table names in your diagram to make it clear what each table contains. It should be easy to find the 1 to 1, 1 to many, and many to many relationships in your application.
  • For API documentation diagrams, it may be easier to simply list a few API endpoints and briefly describe what that endpoint does or returns. You don’t need to include a list of all possible options or ways to use each endpoint.
  • For UML sequence diagrams, we recommend only including them if you have an interesting sequence to show - don’t include one just to have one. In most cases, you don’t need to show things that are generally understood, such as the process of saving a file to a disk or making a request in a web application. Interesting sequences might include the steps taken during program startup to initialize data, a complex authentication process for a web application, or the the process that happens when a special event is triggered in a video game.

Additional Content to Include

In addition to the basic outline listed above, here is a list of some other topics you may wish to cover in your presentation, especially if it is relevant to your project:

  • The current status of the project
  • A brief initial demo of the project

Sample Presentations

You can find several previous presentations under the Files section on Canvas. Bear in mind that these may or may not be example of good presentations, they are simply ones that have been collected for sharing.

Presentation Tips

In Fall 2022, we recorded a video containing some great tips to improve your presentations. Check it out!

Final Presentation

At the end of the semester, each student will give a public Final Presentation that presents all aspects of the completed project.

Overview

The presentation should be roughly 30-45 minutes in length, and cover all aspects of the project. A recommended outline is below:

  • Introduction
  • Background & Related Work
  • Project Requirements
  • Design Documents
  • Project Implementation (Languages, Frameworks, Code Structure)
  • Testing & Evaluation
  • Packaging & Deployment (if applicable)
  • Live Demo
  • Future Work
  • Conclusion
  • Q&A

Scheduling

Final presentations are typically scheduled during the last week of the semester (sometimes referred to as “dead week”) or finals week. You should schedule your presentation in consultation with your advisor, since they are required to attend and grade your project.

There are two options for presenting your project:

  • In Person: - you’ll need to work with the Computer Science office to reserve a conference room for your presentation.
  • Virtual: - you’ll schedule a time using Zoom for your presentation.

You should schedule the session to last for an hour to include time for setup and Q&A at the end.

Advertising

Once you’ve scheduled a time and location for your presentation, you’ll need to create two advertising artifacts to promote your presentation:

  • A single paragraph abstract describing the project
  • A single image (1920 by 1080 pixels) promoting your presentation

Both artifacts should clearly include your name; the title of your project; and the date, time and location of your presentation. These artifacts are due at least one week before your presentation, and no later than two weeks before the end of finals week.

Sample Presentations

You can find several previous presentations and completed projects under the Files section on Canvas. Bear in mind that these may or may not be example of good presentations, they are simply ones that have been collected for sharing.

Final Artifacts

At the end of the semester, you’ll need to submit all of your project artifacts and information for grading. Here is a helpful checklist of everything that should be submitted:

  1. Initial Writeup & Feature List (collected via Canvas early in the semester)
  2. First Presentation (collected via Canvas when it was presented)
  3. Second Presentation (collected via Canvas when it was presented)
  4. Advertisement Materials (collected via Canvas before final presentation)
  5. All Code & Related Resources Pushed to GitHub Classroom Repository
    1. Repository should include a README.md that briefly describes how to compile/run/use the project.
    2. Repository should also include final presentation materials (slides, etc.)
  6. Completed Time Log (collected via Canvas at the end of the semester)
  7. Completed Release Information (collected via Canvas at the end of the semester)

Your advisor will also submit feedback on your final project presentation and artifacts. The course instructors will reach out to advisors to collect this information, so students don’t have to do anything for this step.

Research Project

This course includes a special project track for projects that are considered more “research” than purely software development. Some examples:

  • Exploring how to use artificial intelligence to play a simulated game or recognize images
  • Developing a software tool to interface with lab equipment that requires a large amount of trial and error
  • Writing a tool that uses data science techniques to analyze data and answer a question or hypothesis
  • Developing a new educational software tool, where the major focus of the project is collecting user feedback and analyzing results to continuously improve the software.

To be truly considered research, your project generally must conform to these requirements:

  1. Your project should have a significant experimental component, including a clear hypothesis or research questions to be answered.
  2. Your project, when complete, should lead to a written research paper or poster presentation that could be submitted to relevant conferences or journals.
  3. You are working closely with a researcher or research group on this project.
  4. You are eligible to (and should) enroll in CIS 497 - Undergraduate Research for 0 credit hours. (You cannot earn additional credit hours for a CIS 598 project)

If you feel that your project fits these requirements, you may choose to follow the project guideline adaptations listed below instead of the usual CIS 598 guidelines. Please clearly inform the instructors of the course that you are choosing this pathway early in the semester.

Initial Artifacts

You are still required to submit the initial writeup and feature lists. However, your outline may be modified to the following:

  • Writeup: prepare a short, 1 page writeup that describes your project topic. It should give some basic use-cases and a rough idea of the architecture or platforms you plan on using in the project. Your writeup must include clear sections containing the following:
    • Problem/Solution A clear statement of a problem that you are trying to solve, and how your project will fill the role as a solution to that problem. There are many ways to approach this statement - consult the course instructors for assistance if you are unsure how to phrase your project in this way.
    • Algorithmic Functionality A clear statement of the intended algorithmic functionality of your project. Your project must include some algorithmic functionality beyond the basics. For example, a web application should provide more than just the basic CRUD database operations. Likewise, a video game should include some complex algorithmic component such as procedurally-generated terrain or a learning AI beyond just simple, hard-coded content.
    • Student Qualification A clear statement explaining why you are qualified to take on this project. You must describe your background and experience with the chosen project and related technologies. If you have no prior experience, consider choosing a different project.
    • Project Advisor List your project advisor. You must have permission from your advisor confirming that they will supervise your project before submitting!
  • Research Project: prepare information for your project that clearly addresses the following:
    • Background/Related Work briefly discuss any background or related work relevant to your project. Citations for this section are expected.
    • Hypothesis/Research Questions clearly state and discuss the hypothesis and research questions your project is attempting to answer.
    • Experimental Design discuss the initial experimental design for your project. You should clearly answer how your project will attempt to answer the research questions listed above.
    • Publication Pathway state your intended pathway for publication at the end of this project. You should plan on creating a research paper, journal article, and/or poster to present the findings of your research.

Presentation 1

Your first presentation should clearly describe the research project and plans. The presentation should be roughly 8 minutes in length, and cover the following topics:

  • A brief overview of the project.
  • Relevant background and related work.
  • A discussion of the research questions or hypothesis.
  • Tools, languages, frameworks, or APIs to be used.
  • A proposed publication pathway
  • A proposed timeline for project completion.

Presentation 2

Your second presentation should clearly describe the experimental design of the project and any relevant software. The presentation should be roughly 8 minutes in length, and cover the following topics:

  • The chosen experimental design for the project.
  • A plan for data collection and analysis.
  • A discussion of how the research questions or hypothesis will be answered by the analysis.
  • Relevant software design diagrams.
  • Plans for testing or validation of the results.

Final Presentation

The presentation should be roughly 30-45 minutes in length, and cover all aspects of the project. A recommended outline is below:

  • Introduction
  • Background & Related Work (including citations)
  • Hypothesis/Research Questions
  • Experimental Design
  • Software Design & Implementation (Diagrams, Languages, Frameworks, Code Structure)
  • Data Collection & Analysis
  • Results & Interpretation of Results
  • Packaging & Deployment (if applicable)
  • Live Demo (if applicable)
  • Future Work
  • Conclusion
  • Q&A

Final Artifacts

See Final Artifacts. The requirements are the same.

Publication

While actual publication of any research papers and posters is not required as part of this project, it is highly recommended that you include a plan for completing this work as part of your project. Your advisor can help with this process.

Chapter A

Resources

Helpful Resources!

Subsections of Resources

Links

This page is a collection of general links that may be useful. Email the instructors to request any additions.

  • System Design Textbook - a great writeup on system design, starting from the basics of networking and the internet through high availability systems and case studies. This information is very useful as you get closer to having a product ready for release and deployment, but may also help inform your early design stage as well.

  • Mockola - IT diagramming tool developed by Keyhole Software in Lenexa, KS. The team includes a few K-State CS graduates!

  • How to Write a Good Readme - Some good tips and information about writing a GitHub README file, as well as links to some notable examples.

CIS 748 Videos

This page contains links to videos and some comments from the CIS 748: Advanced Software Management course taught by Dr. DeLoach.

YouTube Channel - contains all videos.

Video Topics

Below is a quick guide to the various videos and their relevance to CIS 598 projects. Feel free to use this to help you find a particular video or topic.

  • Chapter 1: Videos 1a and 1b talk mostly about project teams. 1a also covers work products. 1c talks about different approaches to a project, and may be helpful during initial project planning stages.
  • Chapter 2: Video 2b gives some useful information about software development processes. 2c is some good historical information as well. Videos 2d and 2e are super useful since they cover both iterative and agile development, which is the most common development process employed by students in this course.
  • Chapter 3: The videos from chapter 3 are useful during the early parts of the project and give lots of information about how to determine the features and requirements for a project. Watching these videos early on may help you ideate around your project.
  • Chapter 4: Chapter 4 is mostly related to large software projects and may not be directly relevant, but is still useful in some areas.
  • Chapter 5: Chapter 5 covers large project management, which may be a bit outside the scope of CIS 598 but is interesting if you plan on joining or managing a large software team in the future.
  • Chapter 6: The content in chapter 6 goes deep into project estimation, and is probably too deep for CIS 598. However, some of the content may help give you a few ideas for how to judge the approximate scope and scale of your project as you get further into planning.
  • Chapter 7: I recommend watching some of the content in Chapter 7 on time management and evaluating progress about halfway through the semester. They can be a good prompt for reflection as you reach the halfway point and look ahead to the last part of the project.
  • Chapter 8: Chapter 8 is mostly on value analysis, which is not really relevant to CIS 598.
  • Chapter 9: Likewise, Chapter 9 mostly covers risk management, which is probably not relevant to most CIS 598 projects.

Presentation Tips

This is a presentation tips video recorded during the Fall 2022 semester.

YouTube Video

Edited Transcript

Hello, everyone, I wanted to take a few minutes to record a short video to give you some tips and tricks of things that you can do to improve your presentations for the second round of presentations. Most of these comments are from things that Dr. DeLoach, Dr. Lang and I wrote down on the comment sheets for all of you, those should all be uploaded to Canvas. And if you don’t see that, let me know. And I can find your comment sheet and make sure it gets attached to the comments on canvas. But what I’m going to do is I’m going to go through a few slides examples and talk about a few things that we really noticed in these presentations that are things that you can work on to improve for the next time around.

First and foremost, I’ve got a pretty bland intro slide here that just gives my name and the name of my presentation. But there’s a lot of things you can do to really be eye grabbing from the very beginning of your presentation. For example, just using the PowerPoint Designer, I was able to improve this slide to look like this. It’s gotten much bigger text, it’s got a more interesting font, it’s got a little bit of graphic design to it. And it really brings your attention to the presentation. And it gets across the point very quickly.

The second thing that we noticed is a lot of presentations would begin with an outline slide. Remember that the presentation that you’re giving are only going to be about eight minutes. And so you really don’t have a whole lot of time to talk during your presentation. Especially on an outline slide like this, the text can be really small, there’s no graphics, there’s very little time to present us. And so on an eight minute presentation, I’ve already wasted about 30 seconds just talking about an outline of things that I’m going to talk about in the next eight minutes. I would argue that an outline is more important if you’re talking for an hour or an hour and a half or giving a long form training. But for a short eight minute presentation, I would just leave this slide out, you really don’t need it, dive right into your content and start telling us about your project.

Another big thing that we noticed in a lot of presentations was that they generally used very small text. This slide was made using the default PowerPoint slide layout, and you’ll notice that it only has three bullet points. But nearly three fourths of the slide is left as blank space. And it makes it really hard to read especially in the back of the classroom. But it also means that you’ve got so much screen space that you’re not taking advantage of. The other thing that we notice on this slide is the bullet points themselves are full sentences. And so when I’m reading the slide, I tend to actually read all of the text on the slide instead of trying to present it to the audience. So if you ever have a slide that looks like this, where you’ve got lots of whitespace. Again, this is a really good chance to use the slide designer in PowerPoint or use your own design skills to improve it a little bit. So I always recommend when you’re working with slides, use the available space. On this slide, I’ve moved the header up just a little bit to take advantage of that, using the slide designer, I was able to make a very quick slide that has three bullet points, it uses much more space that has much less blank space. And the bullets themselves have few words that are very eye catching. You can even expand this by centering some of the text or adding additional graphics or icons to really get your point across.

Another comment that we had very often was diagrams were very hard to read. Again, this is the default slide design for when you paste the diagram into a slide. And you’ll notice that the diagram itself only takes up maybe 20 30% of the slide and the rest of it is again left as whitespace it’s really hard to read this diagram, even just on a computer screen. And so when you’re sitting in the room, it can be very, very difficult to read this. So as you’re thinking about your second presentation, one of the things I really encourage you to do is use up the entire slide space for your diagram, we don’t really need a title, we don’t really need a header, we’re just interested in the diagram itself and you verbally can provide the information about what diagram this is and how it fits into your documents. Another thing you can think about is the most slides are going to be oriented horizontally. And so I would reformat this diagram to be wider than it is tall. So again, it takes up all of the available space on the slide.

Another thing that we saw a few times were slides that because of the background graphics or because of other things that were going on, it became very hard to read, you either had dark text on a dark background, or light text on the light background, especially in the classrooms. When you’re presenting on a projector. A lot of times you lose a lot of that contrast between lights and darks. And so it can be even harder to read some of this text when you’re presenting it in the classroom versus what it looks like on your computer screen when you’re making it. So instead, don’t be afraid to use bright colors, bright text, use catchy fonts, and really aim to have some really big contrast on your slides. The other thing you can do, of course is use a consistent color scheme. If you go back and look at the earlier slides, I had some other color highlights and these are the two colors that I used. So I’m trying to keep a very consistent color scheme across my slides even as I shift between light backgrounds and dark backgrounds. I am using a whole bunch of different fonts here just to get the point across in general, you probably want to pick a header font and a text font and stick with that.

A lot of the rest of the comments we left was all about the presentation process itself. One of the things we really noticed is there a lot of students that have felt like made the slides right before class and then would come to class and just read them aloud and winging it instead of actually practicing their presentation. One of the big crutches that you’ll have a lot of times is actually reading directly from your slides instead of thinking about what you’re going to say, and presenting that content to the audience. And because of that, you tend to get a little nervous or a little stressed out. And so the audience can seem very scary when you don’t practice. The other thing we noticed students would do is they would think about what they’re going to say only when they’re up actually presenting their presentation. And so like, they would talk about it, and then they would think about it for a little bit more and say, things that were really hard to follow. And they would always end in a question mark. And so you don’t want to do that you really want to practice your presentation, so that it flows really nicely, and you feel confident, and we understand exactly what you’re trying to say.

So to really make a confident presentation, the biggest thing you can do is practice, practice, practice, put your slides up on your monitor, stand up, walk around, just like you would do with a presentation and talk your way through it. As you talk through your presentation, your brain will start to remember the things you want to say. And it will also work on the segues. between slides. One of the best and easiest ways to tell if somebody’s practice or presentation is if they can talk as their slide changes, because they already know what’s coming next. And they’ve already practiced that segue from one slide into the next. That’s how you can really tell you got a confident presenter that has practiced and presented their content multiple times, so they can flow right through it as they change the slides. The second thing you can work on is eye contact. I know especially those podiums, it is really really tempting to look off to the side and look at your presentation slides. But you really want to focus on looking forward, especially in the room that we’re presenting in where you’ve got the dual monitors right in front of you, you have your slides right here, you can have your slide notes right here. And so if you position yourself in the right place, you should be able to see straightforward into those slides without having to look at the presentation behind you, I guarantee it’s not going anywhere, so you don’t have to look at it. Another big thing you can focus on again, is not reading the content of your slides. Ideally, your slide should have bullet points with just two or three words on it that are emphasizing the points that you’re making verbally. And they aren’t the entire content of the point that you’re trying to make. So again, try not to read your slides aloud, but focus on presenting the content and using the slides as a backup. And then of course, the last thing I recommend is, as you’re presenting make sure you’re avoiding words like and like and say, and all of those other filler words that we pick up in our speech. Again, this is a very, very difficult thing to do. And it takes a lot of practice and a lot of experience. To get around that. With a little bit of focus, what you can do is you can actually record yourself giving your presentation and then listen back to your presentation and see what it sounds like as you talk. That’s usually one of the easiest ways to tell if you’re doing this and helps you actually fix that problem.

Finally, most presentations were then on the last slide that simply says questions. I feel like there’s an opportunity here to really improve this slide by simply adding a little bit more design, and also adding a summary of your key points or the takeaways that you want for your presentation. A lot of times when students are trying to think of questions to ask you, it really helps to quickly summarize what your project is, what points you had, what structure you had anything that you can give, maybe even just another quick picture of your GUI outline something to help remind them of what you were talking about. This gives you that last slide. But usually this slide stays up on the screen longer than any other single slide. And so summarizing your key points and really giving this takeaway or some memorable graphic or quote, that can really help sell the point at the end of your presentation. So don’t be afraid to take advantage of even this space to get your presentation point across. Again, you’ve only got eight minutes to present. So you have to be really efficient about your slides really efficient about your talking and make sure that you’re getting it across.

In fact, as I’m recording this video right now, I noticed that the raw cut is about 10 minutes, it will probably get cut down to about eight minutes right there. So that gives you a really good idea of how long it takes to present just a little bit of content. I hope this was very helpful for you. I will post this video hopefully shortly. So hopefully you’re watching this before you give your second presentation. If you have any questions or comments, let me know. I’m happy to work with you to give you some more presentation tips. I also recommend working with your advisors, they can be a great first draft of your presentation. They may even be willing to sit and listen to a earlier rough cut of your presentation to give you feedback on things that you can do to improve before you present it in the class. Best of luck and I look forward to seeing your second presentation starting next week.

Projects & Time Tracking

This is a video exploring GitHub Projects & Clockify Time Tracking for Spring 2023

YouTube Video

Edited Transcript

Hello, in this video, I’m going to talk through a bit of the process of doing time tracking in CIS 598, as well as doing some project management using GitHub, through the GitHub projects interface. First and foremost, what I’ve pulled up is Clockify, I’ve invited everybody in the class to Clockify this semester for our time tracking. Clockify is a free application that you can use to keep track of what you’re working on. And I think it has some really useful features that will make this class go a lot faster. So when you first log in to Clockify you’ll be able to select both the timesheet and the time tracker. The timesheet is pretty simple. It’s a traditional timesheet where you list all your projects, and then list how much time that you spent on those. If you want to do that, that’s fine.

However, I really recommend that you use their time tracker, in the time tracker, you can say exactly what you’re working on. So I can say I’m working on CIS 598. And I can put just about anything here, I’m going to say that I am recording a video, I’m going to select a project, I’m going to put a task, I’m going to say this is for learning. So I’m going to choose that project, choose that task and hit start. And now Clockify is tracking my time. So as I record this video, you’ll see that time probably jumped around because I’m going to have to make edits later.

So what I have done is I have populated this with a single project called CIS 598 Spring 23. And then I’ve added a few tasks. My goal for this semester is to limit it just to this project in these tasks, we’ll see how that actually works. In practice, I may change this in future semesters. Basically the tasks, we have development, which is where most of your time is going to go, we’ll have some tasks for creating your final presentation and final artifacts for creating the initial artifacts, which is mostly what you’re doing this week, we have a time specifically spent on learning. So if you’re doing any playing around with tutorials, reading documentation, things like that, you’ll probably want to do learning, we have time for preparing presentations one and two. And then we have some time for testing your project. I’m going to try and keep it to these few tasks. If you have a really good idea for a task that we should be tracking, let me know I can add those into this list. But for the most part, we’re going to stick with just these tasks for now. Hopefully everything works like I’ve configured it. But if you have any trouble accessing either the projects or the tasks, let me know. And I can work on that.

So we see here that it’s still tracking my time. And the nice thing about Clockify is it includes a few other features that are really useful that you might want to check out. First and foremost, it has a browser extension for just about any browser. And you’ll notice that the browser extension is synced with the website. And so if I start tracking something on the website, the browser extension, also notice that I’m tracking that and so you can control them both places. There are also desktop applications that you can get for Clockify. And so once again, they’re pretty much kept in sync. So if you start something somewhere, you can then access it somewhere else.

The other thing that you can do with Clockify that I will briefly show you is you can actually go in and install the Clockify extension in Visual Studio code. So if I search for the Clockify extension, I can install it in my Visual Studio code. And then once I’ve installed it, I can click over here on this Clockify Explorer, and it will show me all the information, the only thing you need to do to get this to work is to get an API key, and then input it into the extension. To do that, and clarify, if I go back over here to my Clockify, I can go to my profile settings. And then if I scroll down toward the bottom, I can see this API key, which is the one I’m using, don’t worry, I’m going to regenerate that after I record this video. But this API key you can put into Visual Studio code so that you can track your information here. The tricky thing about this is the only way to start tracking time that I’m aware of is to actually go to the command palette, which is Ctrl+Shift+P and then you choose Clockify: Start Tracking. And then it will have you go through the process of choosing your workspace, a project, whatever task you’re working on. So if I’m working on learning, and then I can say, testing VS code, part two, and then I can choose either billable or non billable, it doesn’t really matter. I can enter any tags by once. And then it will say tracking started. And so then in Visual Studio code, I can start tracking right there. And you’ll see that it keeps track of those time entries and projects and everything here. Unfortunately, I don’t know of a way to go through this explorer and actually start tracking via this. I think it’s something they’re working on adding to this extension, maybe but it’s not there right now. So that’s one option if you use Visual Studio code to track your time. I’ll also show one more through GitLab or GitHub here in just a second.

The other thing that I have done is I’ve had you all sign up for GitHub classroom, which will get you all a GitHub repository. That is under the ksu-cs-projects-2022-2023 organization, and then it should be spring2023-yourID. I’m using a test account here so it’s dash russfeld-student I’m actually just going to be dash your GitHub ID not your eID. And so this is where you’re going to be storing your code throughout the semester. Hopefully, you’ve got some experience with GitHub by this point. If you have any questions about using Git or GitHub, let me know.

There are a couple of things that we want to use on GitHub to keep track of things. First and foremost is the Issues tab on GitHub, I really encourage you to keep track of not just your to do list. So any entries on your feature lists for the MVP, 1.0, and 2.0 should probably be entered here as issues. But I also encourage you to use this to keep track of your to dues, your bugs, anything that you’re working on, this becomes a really great place to keep track of the to dues that you have in this project. The other thing you can do is click this button over here to switch to milestones. And so you can create milestones a couple of different ways. One way that I like to do milestones is based on my sprints. And so in this class, we’ll have Sprint’s that end on the odd week, so we’ll have a sprint for week three, week five, week seven, and so on. So you can create those as milestones. Those give you those nice two week Sprint’s that you can show to your advisors and keep track of what you’re doing. You could also use the milestones for MVP, 1.0 and 2.0. And break it out that way, you’d have a little bit longer amount of time to work on those. But that may make a little bit more sense to you, depending on how you’re organizing your project.

So what I encourage you to do first is to go through and create issues and then also create milestones for everything. And if you want, as you’re creating your issues, you can add them to the milestones, but I’ll show you this projects interface, that’s actually where we want you to keep track of stuff. And it makes a lot of this really easy. The one reason I really like putting things in issues, if you have the Clockify browser extension installed, it will add some information right up here at the top of an issue so that you can start the timer. So if I’m going to start working on test issue 123, I can click Start Timer, and it will start the time. And so once again, I choose my projects. Here, I can choose the task. So I’m doing project development, I can add any tags I want. But as soon as I hit Done, clock, if I will start tracking that. And of course, if I check the Clockify app, I’m now working on test issue 123. And it’s been tracking for 20 seconds now. So it’s a really cool way to keep track of what you’re doing. But now the timer started on that. So that’s one thing that you can do.

The other thing I have done is I have gone in and I’ve added a project for everybody, the project is based on your eID, that was the easiest way for me to generate those actually had to write a bit of code to automatically generate these. And then I’ve added you to the project, what you’ll probably have to do is link your project to your to your repository. If it’s not there already, I went through and linked most everybody’s last night. So if it doesn’t show up, let me know. And I can help you do that. But I’m going to look at this project, I recommend opening in a new tab just so it’s easy to keep track of. And so I’ve got this project open up here. By default, this project will probably use the table view which looks something like this, I prefer the board view. So I can choose that view. And then I may have to go down here, when I change the view, I may have to click save changes so that it stays that way. But in the board view, again, you can create these boards, this is a standard Kanban or Trello, or whatever you’re used to board. And so you can add issues here by just typing in items. Or what you can do is hit this plus button and add items from your repository. So if I find my rust felled students repository, I can choose that repository, it will show me the items that I have that aren’t on this list. So I can just check mark on my items, hit Add Selected. And now it’s going to add all of these items to this project board. So now I’ve got my issues right here in my project board, they’ll come in on the to do, I can move them over to either in progress or done.

And again, if you want, you can rename these to say I’m going to do this week three, I’m going to do this week, five, etc. And so I can reorganize things pretty quickly. I can also click on these to go into the issue itself and do things such as add milestones. So I can add things to the week three or the week five milestone, but you’ll notice that the boards set the status. And so what I’m really recommending that you do is use the milestones to keep track of what sprint you’re on, and use the board to keep track of the status. And so if I go back to where I had these, I can say this is in progress. And then this is done. Then whenever I look at the issue, I can see that it’s in week three, it is an in progress issue, and you’ll be able to track it right here. You can add comments to it to keep track of things, you can close the issue here, you can also close it through your GitHub commits. If you haven’t looked that up, there’s a really neat way that you can type in your commit message, something like closing number one, and it will close that issue for you. When you make that commit. It’s really cool. So there’s lots of things that you can do here, but this is kind of what I recommend. So again, the best way to keep track of this is to go through and add your To Do lists as is.

So hopefully, that covers most of the information that you’re going to need about using Clockify in this class, as well as using GitHub trackers, and using the projects in GitHub. It’s a new system that we’re trying to share. But the goal is to try and keep this so that we can easily see what you’re working on. And it also is supposed to make it easier so that at the end of the semester, you don’t have to make up your time schedule. You’ve been keeping it right here in Clockify. You’ve been keeping track of your project in GitHub projects, so your advisor can always pull it up and look at it. Hopefully this works out really well. But it is something new. So if you have any questions, concerns or anything that you think we can do better with this project process, please feel free to let us know. Otherwise, let me know if you have any questions and I will see you all in class very soon.