Introduction
Welcome to CIS 598!
Welcome to CIS 598!
Starting with the Fall 2026 semester, official K-State syllabi can be found in Coursedog.
This page is no longer the official syllabus, but it may still contain useful information for students.
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.
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.
After completing this course, a successful student will be able to:
The course meets in person Mondays from 3:30 - 4:20 PM in DUR 1066. 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 Wednesday in-person class periods for presentations if needed. These dates will be clearly announced in advance.
On weeks where Monday falls on a university holiday, the course will instead meet in person on Wednesday of the same week unless otherwise announced.
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.
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.
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:
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:
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.
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:
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.
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.
This course uses a stoplight approach regarding the use of generative artificial intelligence (GenAI) tools, such as ChatGPT, Claude, Copilot, and others. Each assignment or group of assignments will be clearly labelled with one of three labels, indicating what level of GenAI usage is allowed.

Policy Violations: Any usage of GenAI for this assignment will be treated as a violation of the K-State Honor Pledge and may result in a grade of 0 for the assignment and other sanctions approved through the K-State Honor Council.

Citations Required: Any usage of GenAI must be noted and cited directly in the work, either in source code comments or text citations in written work. Citations should include the tool used, the prompt(s) given, context provided to the tool (e.g. existing code), and a discussion of how the results were used to complete the assignment.
No Direct AI Results: For this assignment, you may not include the GenAI results directly in your submission - it must be used to inform and adapted to fit your own work. For example, you may not prompt GenAI tools to just write your code and submit that directly; instead, you should ask for help performing specific tasks and then use the results within your own work.
Understand Your Work: To ensure compliance with this policy, the instructor reserves the right to request additional discussion or explanation of any work submitted by a student. The student should understand and be able to clearly explain all submitted work and code, even materials directly or indirectly produced by GenAI. A student who is unable to explain a submission to the satisfaction of the instructor may be considered to be in violation of this policy.
Policy Violations: Any usage of GenAI that involves direct submission of the GenAI outputs without additional work done by the student, or use of GenAI without proper citation, may be treated as a violation of the K-State Honor Pledge and may result in a grade of 0 for the assignment and other sanctions approved through the K-State Honor Council.

Citations Required: Any usage of GenAI must be noted and cited directly in the work, either in source code comments or text citations in written work. Citations should include the tool used, the prompt(s) given, context provided to the tool (e.g. existing code), and a discussion of how the results were used to complete the assignment.
Direct AI Results Allowed: For this assignment, you may include the GenAI results directly in your submission. It is still your responsibility to ensure the submission meets the assignment’s goals and is correct and factual - remember that GenAI is not infallible and may produce incorrect results. You are still solely responsible for ensuring the submission meets the stated assignment goals, and assignments in this category may receive additional scrutiny for correctness and accuracy.
Understand Your Work: To ensure compliance with this policy, the instructor reserves the right to request additional discussion or explanation of any work submitted by a student. The student should understand and be able to clearly explain all submitted work and code, even materials directly or indirectly produced by GenAI. A student who is unable to explain a submission to the satisfaction of the instructor may be considered to be in violation of this policy.
Policy Violations: Any usage of GenAI without proper citation may be treated as a violation of the K-State Honor Pledge and may result in a grade of 0 for the assignment and other sanctions approved through the K-State Honor Council.
Please contact the instructor if you have any questions about this GenAI policy. It is your responsibility to understand it and proactively ask questions if you are unsure; ignorance of this policy is not an excuse for violating it.
In keeping with the expectation for transparency and citation regarding the use of generative artificial intelligence (GenAI), the instructors of this course will clearly denote any usage of GenAI tools in the process of teaching this class. Specific policies for the usage of GenAI by the instructors and TAs of this course are given below:
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.
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:
Students will make use of GitHub 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.
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.
The statements below are standard syllabus statements from K-State and our program. The latest versions are available online here.
This is our personal policy and not a required syllabus statement from K-State. It has been adapted from this statement from K-State Online, 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:
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.
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.
© 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.
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.
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:
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.
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.
As you consider project topics, remember that completed projects must include these two items:
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.
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.
Each advisor approaches senior projects differently, but in general your advisor will typically ask you to do the following:

A deeper discussion of project expectations with regard to GenAI usage can be found here
At the very beginning of your project, you should create a few initial artifacts to start the development process:
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.
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.
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.
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.
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.
Every two weeks throughout the semester, you are expected to do the following:

During the first half of the semester, each student will be scheduled to give a Overview & Requirements Presentation related to the project.
The presentation should be roughly 8 minutes in length, and cover the following topics:
The first four 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.
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:

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.
In Fall 2022, we recorded a video containing some great tips to improve your presentations. Check it out!
During the second half of the semester, each student will be scheduled to give a Design Presentation related to the project.
The presentation should be roughly 8 minutes in length, and cover the following topics:
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:
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:

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.
In Fall 2022, we recorded a video containing some great tips to improve your presentations. Check it out!
At the end of the semester, each student will give a public Final Presentation that presents all aspects of the completed project.
The presentation should be roughly 30-45 minutes in length, and cover all aspects of the project. A recommended outline is below:
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:
You should schedule the session to last for an hour to include time for setup and Q&A at the end.
Once you’ve scheduled a time and location for your presentation, you’ll need to create two advertising artifacts to promote 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.

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.
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:
README.md that briefly describes how to compile/run/use the project.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.
This course includes a special project track for projects that are considered more “research” than purely software development. Some examples:
To be truly considered research, your project generally must conform to these requirements:
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.

You are still required to submit the initial writeup and feature lists. However, your outline may be modified to the following:
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:
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 presentation should be roughly 30-45 minutes in length, and cover all aspects of the project. A recommended outline is below:
See Final Artifacts. The requirements are the same.
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.
This course encourages the use of Generative AI (GenAI) tools such as GitHub Copilot, ChatGPT, and Claude Code when developing your project. However, the usage of these tools can greatly impact our expectations for your project. We all understand how powerful they can be, but also how they can lead to projects that are poorly understood by the developer and code that is not easily maintained. This page will attempt to clarify our approach to handling project expectations in light of GenAI.
To begin, we wish to impart a core mindset for grading projects in this course:
We are grading the process, not just the product.
To aid in the discussion, we’ll loosely group projects into three categories. Those categories are not mutually exclusive, and some projects may not fit neatly in a single category. They are simply useful benchmarks to start from.
Students may choose to build a project that does not involve any GenAI usage when it comes to developing the actual code of the project. They may still make use of GenAI to create presentation graphics, diagrams, and other artifacts for the project. The intent of a project in this category is to give the student hands-on experience with building a project’s code directly from scratch, just like it had been done for decades prior to the release of modern GenAI tools.
As such, our expectations for this type of project will reflect what we expect a single developer to be able to achieve independently. Thankfully, most faculty and advisors are very familiar with these types of projects, and have a solid idea of what a reasonable scope and scale for such as project is.
Students who choose this type of project should be prepared to discuss their code in-depth and explain their thought processes, debugging strategy, lessons learned, and overall development process that is reflective of a project that does not use GenAI tools.
Violations: Students who declare that their projects do not make use of GenAI will be held to that requirement. Any violation of this policy may be treated as a violation of the K-State Honor Pledge and may result in a grade of 0 for the assignment and other sanctions approved through the K-State Honor Council.
Basically, don’t tell us that you are not using GenAI just to reduce the expectations, then vibe code your project over a weekend. We absolutely understand how this could be exploited, and will be watching out for it.
Students may choose to build a project with the use of assistive GenAI tools such as GitHub Copilot’s autocomplete feature, or by using standalone chats with tools such as Claude and ChatGPT. More advanced tools such as Claude Code or full agentic use of GitHub Copilot is not included in this category.
Our expectations for this type of project are somewhat higher than a project that does not use GenAI at all. We expect that students may spend less time writing actual code and debugging, and more time developing the overall structure of the application and the user-facing features. Therefore, we hope to see a project that is more feature-complete and has more features overall than a project without GenAI usage.
Students who choose this project should still be prepared to discuss their code and structure in-depth, but should also discuss how they were able to make use of GenAI to assist in answering questions, writing code, and solving problems throughout the project. This discussion should be reflective of a student who used GenAI in an assistive capacity, but did not make use of any agentic features.
Violations: Students who declare that their projects do not make use of agentic GenAI will be held to that requirement. Any violation of this policy may be treated as a violation of the K-State Honor Pledge and may result in a grade of 0 for the assignment and other sanctions approved through the K-State Honor Council.
Similar to the first category, don’t tell us that you only use GenAI a little, then spin up multiple agents to actually work through your project features. If your project has a .claude folder or any other markdown files directing the AI outside of it just following along with your coding, it probably doesn’t belong in this category.
We still expect you to be actively writing code and piecing the project together, though GitHub Copilot may be able to finish lines of code or short methods based on your typing without additional direction.
Students may also choose to make full use of an agentic GenAI tool such as Claude Code to develop their project. This category is meant to be reflective of what students may actually experience in industry, but also comes with significantly higher expectations and requirements. Agentic GenAI tools are very powerful and can lead to an extraordinary project, but may also cause developers to lose sight of the structure and contents of their code, making it much more difficult to debug and explain.
Our expectations for this type of project are therefore very high - we expect the project to have a number of features that are complete, tested, and usable. Other items such as security, accessibility, and documentation may also be expected (many of those items are a simple command or skill that can be invoked).
Students using agentic GenAI should be prepared to describe their full setup, including key files such as CLAUDE.md, skills, plugins, and models used. This process involves many design decisions that should be considered with the same amount of care as any design decisions made in the code itself. In addition, we encourage students to have their agents create and update development plans that are stored in the repository alongside the code (most agents can be configured to store these plans). This helps make the process and context visible to the instructor and advisor.
That said, we still expect students to have a solid understanding of the structure and functionality of their projects, including the ability to step through the structure of the code and design documents.
Students who declare that they plan to use agentic GenAI may not be at risk of violating the K-State Honor Pledge, but instead assume the risk that the expectations for their project will be reflective of what we expect a student to accomplish with that level of assistance. If a project does not meet those expectations due to poor or lacking usage of GenAI, that will be reflected in the student’s overall grade on the project.
Basically, if you declare you plan to use agentic GenAI in your project, we expect you to make full use of those tools to develop an amazing project. You should still be spending the same amount of time actively working on your project as other students, not just writing a prompt and then waiting for the AI tool to complete.
If your project does not meet our high expectations in this category, your grade may be impacted accordingly.
This course is often one of the last courses taken by students in our department, so it is a natural place to share some information regarding graduation and ensure that everyone is on track for a successful end to their degree program.
There are a few steps that you should complete before graduation. Refer to these pages for the latest information: