Frequently Asked Questions (undergraduate advising)


Declaring a Major or Minor

Declaring the CS* Major

Q: I am currently (majoring in [xxx] | undeclared) but I have decided I want to be a CS major. How do I declare the CS major?

A: CAS advisors in Tykeson Hall (Scientific Discovery and Sustainability flight path) can help you. They can work with you to make a graduation plan, and they can work with the CS department to activate your new major. See: . Your Tykeson advisor can also assess whether your situation requires additional consulting with a faculty advisor in CS, and will refer you to the CS advisor if needed. Then send email to, cc your Tykeson advisor, and be sure to include your student number. It is a good idea to check in with a CS faculty advisor at some point within a year of declaring the major, but it is not required before declaring the major.

*Note: Until fall 2022 the name of the degree program and department was “Computer and Information Science”. Starting fall 2022, they have changed to “Computer Science.” While the prior name was accurate, unfortunately the abbreviation “CIS” was often confused with “Computer Information Systems”, a less technical degree program typically offered in schools of business. The shortened name and its abbreviation “CS” avoids this confusion.

Declaring a CS/CIT Minor

Q: I am currently (majoring in [xxx] | undeclared) and I would like to add a CS or CIT minor. How do I declare the CS minor?

A: While you are not required to see an advisor before declaring the minor, CAS advisors in Tykeson Hall (Scientific Discovery and Sustainability flight path) can help you work out your graduation plan and make sure it is feasible. Then send an email to Be sure to include your student number.

Q: Can I declare the CIT minor if I am a CS major?

A: Normally the CIT minor cannot be combined with the CS major, because of excessive overlap between the major and minor. A CS major who wishes to add the CIT minor, or a CIT minor who wishes to add the CS major, may petition to the Undergraduate Education Committee of the Computer Science department for an exception. The petition should explain specific reasons, typically career goals, for selecting this combination. If the exception is granted, it may be conditional on other course choices (e.g., specific selections of CS 400-level electives) that are consistent with the stated reasons for combining CIT with CS. Note also that a minor in CIT will never be accepted as a substitute for the science requirement of the CS major.

Starting points

Starting points for most students

Q:  Where should I start if ... 

I don't intend to major or minor in computer science or a computing-related field.  I can take only one or two courses in CS.  I want a basic background and some practical skills, without too much math. 

A:  CS 110 and/or CS 111 are good starting points for many students in other majors.  CS 110 is an Understanding Digital Technology course, with a broad, high-level introduction to various “digital world” topics, e.g., hardware, software, the internet, privacy, security, etc.  CS 110 also covers web programming using HTML code.  It has no pre-requisites.  CIS 111 in an intro to web programming using Javascript.  CS 110 is a recommended pre-requisite for CS 111,  but 111 can also stand on its own.  CS 111 also has a pre-requisite of Math 101. 

I am willing to take more math, but I still want a gentle introduction to programming. 

A:  CS 122 is an introduction to computer science and programming using Python, the same language used in CS 210 (see below).  CS 122 has a math 101 pre-requisite. It is a gentler introduction to Python programming than CS 210, with less breadth and depth.  Whereas CS 210 focuses on computer science topics, CS 122 focuses more on general problem solving with computing.    CS 122 can be useful by itself or as preparation for CS 210. 

I intend to major in computer science, data science, or math and computer science, or to study more advanced computer science for use in my major field.  Math is fine!

A:  You may want to start with CS 122 (see above), or you might be able to jump right into CS 210, which is much more intense. CS 210 is the first required course in the CS major.  It has a Math 112 prereq and focuses heavily on programming (Python) in the context of CS topics.   Students who have not programmed before, but who took calculus in high school or college, typically can keep up with CS 210, but it is intense and moves very quickly.     Data science majors who have not finished calculus should enroll in calculus (Math 251) concurrently with CS 210;  computer science majors should enroll in either calculus or discrete math (Math 231).   

Starting points with AP credit

Q: I received AP credit for CS 210 and CS 211, but I am worried about my readiness for CS 212. How can I determine whether I am ready?

A: If you did well in your CS AP course(s) and earned AP credit, you are probably prepared for CS 212. Your experience with Java will not be the same as many of your classmates’ experience with Python in CS 210 and 211, but it won’t necessarily be better or worse. Your classmates, like you, will mostly be encountering the low-level C language for the first time. They will be as challenged by it as you. That said, if you find yourself struggling in the first couple weeks, talk to your instructor … if you really need to back up and take a fresh start at it, we can arrange a late transfer from CS 212 to CS 210.

Q: I received AP credit for CS 210 but not for CS 211. Where should I start?

A: Because CS 210 and CS 211 both use the Python language, it will be difficult to start in CS 211 if you do not have a good grasp of Python programming. You have a couple options: You could attempt to learn Python programming through self-study, and then start in CS 211; this may be an attractive option if you have a summer to prepare. For many students it is better to start with CS 210 as a review of computer science concepts as well as an introduction to Python. You can petition the registrar to change your AP credit from CS 210 to CS 2xx, so that you can receive credit for taking CS 210.

Starting points for Post-Bacc / Second Baccalaureate students

Q: I have a prior degree in [xxx], but I have decided that I would like to make a career change into software development. Should I take a pursue a second bachelor’s degree in CS? How long would it take?

A: The time to earn a second bachelor’s degree in CS varies widely, depending on your prior background (both academic and experiential). The computer science curriculum, as in many STEM fields, is highly sequential, so if you start from the beginning (CS 122 or CS 210) and proceed all the way to a degree, it will probably take three years. It is best to talk with a CS faculty advisor to consider your options, which might include different starting points as well as different end-points.

Before that meeting, here are some things to think about:

  • Is the degree important to you, or would you be happy to establish enough skills for your career goals?
  • Do your longer term goals include a graduate degree in computer science?
  • Are you more concerned with the duration of your study (minimizing time to finishing by studying full-time), or would a somewhat longer program with a more modest course load work for you?
  • What attracts you to computing? Are you motivated more by the intellectual challenge and interesting problems, or by a stable long-term career, or something else? (This may be helpful in considering some of the prior questions.)
  • Are there aspects of your prior study or job experience that you would like to combine with new skills and knowledge in computing, or would consider?

Starting points for self-taught programmers

Q: I have been programming for X years [ for my own projects | in my job ] and feel that CS 122 or CS 210 may not be the right starting point for me. Is it possible to start at a different point in the curriculum? Is there a placement test or another way to find the right place to start?

A: There is no placement exam, but we often work with students to find a starting point at which the student has a good chance of success but is not just repeating familiar material. This can be tricky because quite often a student is advanced in some aspects of programming but missing some other fundamentals. The best way to explore this is to talk directly to a CS advisor. The advisor will probably ask you about your preparation in mathematics as well as computer science. You may also be asked to do some self-assessment by trying projects and exams from past offerings of classes. The advisor may also quiz you on some computer science concepts and techniques, but this is not an exam that you “pass” or “fail”; it is your interest as well as ours to find a suitable starting point, and identifying the boundaries of your knowledge is necessary to that end. Often it takes more than one advising session, often with some self-study or small projects between sessions, to get a good sense of the best placement, so it is important to connect with an advisor as early as possible. Note that a more advanced placement will not reduce the number of CS credits that you must earn for a major or minor in CS, but it might help you get to more challenging material sooner.


CS Science Track options

Students are encouraged to take a minor or a second major, and in many cases the minor or second major can be accepted by petition as a substitute for the CS science track requirements. As stated at, approval is not automatic. A petition should be filed before a student commits to a minor or second major.

  • It is not possible to use mathematics minor as a substitute for the science track. A completed second major in mathematics may substitute.
  • Examples of minors and second majors that have been accepted in lieu of the science track requirement include business and music technology. However, approval is not automatic. The coherence of the overall plan of study and justification provided in each petition for a substitution is considered individually.
  • Other majors and minors might be accepted with a good rationale. Good justifications for accepting a major or minor in lieu of the science track requirement may include:
    • A concrete, realistic plan to use computing in another field. For example, a student with a second major in archeology might make a thoughtful, plausible case for applying approaches and concepts from computer science in archeology. Mere mention of the existence of computational branches of another field does not suffice.
    • A thoughtful, realistic plan to apply knowledge from another field in computing. For example, one could imagine a minor or major in linguistics tied to study of human computer interaction. Evidence of a thoughtful plan would typically include specific course choices or research in the minor or second major field, e.g., it may be easier to make a case for psycholinguistics than for comparative linguistics.

Q: Can the Clark Honors College science colloquia count for the CS science requirement?

A: No, the CS department requires a full year (three courses) of study in one field of science or a computing related discipline. The CHC science colloquia are excellent, but each colloquium is on a distinct topic or subfield, so they don’t fulfill our goal of making sure you have a solid foundation in a related discipline.


Transfer credits

Transferring from Oregon universities and community colleges

Q: I am (taking|planning to take) CS (161 | 162 | 260 ) at (Lane | Linn Benton | ...). How will this transfer to University of Oregon?

A: Introductory sequences at other Oregon universities and community colleges transfer as follows:

CS 161

CS 210  (currently using Python at UO)

CS 162

CS 211  (currently using Python at UO)

CS 260

CS 212 (currently using C at UO)

While you could transfer at any point, some points are smoother than others. CS 210 and CS 211 are closely integrated, making a transfer after CS 161 / CS 210 and before CS 162 / CS 211 difficult, particularly if CS 161 is taught using a different programming language. If you take CS 161 at a community college, it is probably best to take CS 162 at the same community college. Transferring in at CS 212 (CS 260) works well because UO students are changing programming languages at that point, and of course transferring in after CS 212 (CS 260) is also fine. It is ok if your CS 161, 162 courses use a programming language different from Python as long as you don’t jump into the middle at CS 211.


Transferring other computer science courses

Q: I have taken or plan to take course XXX at University of YYY. Will this course transfer as CS ZZZ at University of Oregon?

A: Transfer equivalencies from many universities can be found in a transfer equivalence database.   The transfer equivalence database should always be the first check. Occasionally a course may be accepted to satisfy a CS requirement even if it does not transfer as the UO CS course satisfying that requirement. For example, CS 195 (web authoring) at Lane Community College does not transfer as CS 110 at UO, and does not satisfy all requirements that CS 110 satisfies (in particular it is not a Science core qualifying course at UO), but it may nonetheless be used in place of CS 110 for the CIT minor.

Substitutions of course XXX for ZZZ to meet a CS requirement, when XXX does not transfer as ZZZ, require a petition to the UEC. The petition should include a copy (preferably a link to) the syllabus of course XXX, and the student may be asked for example work (projects, exams, etc) to help CS determine whether course XXX sufficiently meets the learning objectives of ZZZ.

Q: I have just one or two courses left for the degree, and because ____ I’d really like to move to / remain in ____ . Can I take my remaining courses at another university?

A: It may be possible to finish your remaining coursework at another university, but it requires care. First, check your degree guide in Duckweb. It has an entry for the UO residency requirement, which looks something like this:

If your residency requirement has not been satisfied (like the example above), then you must take additional coursework at the University of Oregon. In addition to the UO residency requirement, the CS department requires that you take 24 credit hours of CS courses at UO.

If you have satisfied both the UO residency requirement and the CS requirement of 24 CS credits at UO, then you may be eligible to take your remaining coursework somewhere else. But be careful! It is essential that any course you plan to take elsewhere take be pre-approved as a course that could be transferred to the UO to meet major and degree requirements. For the Computer Science major, this would be via petition to the CS Undergraduate Education Committee. Please include any information about the university and course that would help the CS UEC make this determination, e.g., a course website, syllabus, schedule, text, and similar information.


Characteristics of the Program

Q: Does University of Oregon offer online courses?

A: While there are some online and asynchronous courses at University of Oregon, most of our courses for computer science majors are offered synchronously and face-to-face in a classroom. We understand that face-to-face classes won’t work for everyone. We take advantage of real-time interaction for approaches and activities that we can’t duplicate in an asynchronous format. Some other universities offer more asynchronous and remote courses, which may be more accessible to some students.


Math Pre-requisites

Q: I want to take (CS 111|CS 122), which has a math 101 pre-requisite. I took math 101 in high school. How can I get approval to take the CS course?

A: As you have taken Math 101 in high school you can meet the CS 111 prerequisite by taking the free, online ALEKS Math placement test and scoring at the prepared-for-Math 111 level. Your score will serve as the prereq for CS 111 or CS 122, and you can register in the usual way.

Q: The ALEKS math placement test places me at “ready for XXX”, but I have already taken courses at least through XXX in high school. What should I do?

A: Brush up and retake the ALEKS exam! Many students are disappointed in their initial ALEKS exam result, especially if it has been a few years since they took a math course. You can retake the exam up to four times, but you should use the ALEKS practice materials to freshen your knowledge and facility with the material first. Plan to spend at least an hour on the prep module before giving the ALEKS exam another try. You can find more information and a link to the prep module here:


Portfolio Projects and Self-Study

Q: What can I do (over summer | between terms | in my spare time) to improve my skills and prepare for a career and internships?

A: Always be programming. You can do projects on your own or with friends, on topics that interest you. As you get into the upper division of CS classes and start looking for internships and career opportunities, at least some of your independent projects as well as the class projects you are proudest of can be kept in a portfolio in a public repository like GitHub.

You might choose a project in an application domain you care about, or as a way of pursuing a technical topic (e.g., functional programming, programming in Rust, embedded programming, etc). The projects don’t need to be big, but you’ll want to scale up a bit as your expertise grows. And failure is not a catastrophe, provided every failure helps you see more clearly what you need to learn to be able to do the things you want to do. Try to fail on small enough projects that you can learn quickly and move on to success … sometimes that means purposely picking something small but hard to learn from. (Your portfolio should show off your successes rather than your failures.)

If you were learning clarinet or drumming or juggling, the things you would need to practice and get better at would be just a little beyond your current level of competence, and you would need to also practice the skills you already have. Programming is not so different. Don’t jump into something that is way beyond what you can tackle, but also don’t limit yourself to what you already know. Make modest steps. And do something that you find fun and intrinsically interesting. You wouldn’t want to just practice scales on the clarinet or rudiments on the snare drum. You’d want to practice your scales and rudiments, but also learn a musical piece that would give you pleasure and make you feel accomplished, something just difficult enough to move you forward. The same with programming.