Computer Science

B.S. Computer Science

Department of Computer Science | College of Engineering


  • INTRODUCTION
  • WHAT IT TAKES
  • WHAT PEOPLE DO
  • GET INVOLVED
  • FACULTY
A computer science student using custom software on a two-display desktop

From supercomputing in the study of global warming to developing complex wireless mobile devices to creating social networking sites like MySpace, computer science is a constantly evolving field that is ever-expanding. With a Bachelor of Science (B.S.) in Computer Science from the University of Idaho, you will be equipped with in-demand technical skills and practical experience to pursue an exciting career in one of the fastest growing and dynamic segments of our society.


Two computer science students work on a project together

As a student in the B.S. Computer Science program, you will learn to analyze problems, formulate, test and use advanced computing equipment, and work in teams to solve problems and develop products. You will become familiar with Linux and Windows operating systems, study computer organization and architecture, and learn to program in C++. You will also take courses in mathematics, calculus, linear algebra and statistics. As you progress through the program, you will have the flexibility to tailor your studies to specific subject areas, such as computer networking or security.


Graduates of the B.S. Computer Science program are also prepared for advanced study in the field. Related graduate degrees offered at the University of Idaho include Master of Science (M.S.) in Computer Science, Doctorate of Computer Science, M.S. BioInformatics, M.S. Computer Engineering and M.S. Mathematics.


With more than 200 undergraduate students and 50 graduate students in the computer science program, you'll be part of a vibrant learning environment that encourages student collaboration and personal attention from our experienced faculty. Students also have access to specialized labs dedicated to learning and research in computer security and collaborative virtual environments.


Most computer science courses are offered on the Moscow, Idaho campus with a select number of undergraduate and graduate courses also available on video through our Engineering Outreach program. For more information visit: http://www.outreach.uidaho.edu/eo/.


A computer science student working in a server room

Prepare for Success

Students in the computer science program have diverse backgrounds and interests, but often share the following qualities:

  • A high-level of personal initiative
  • A strong desire to learn new things
  • A desire to be a lifelong learner who embraces the idea of working in an ever-changing environment
  • Willingness to experiment and work diligently to discover solutions

Successful students also have an aptitude for mathematics and science. To prepare for the computer science program while you are still in high school, it is helpful to take as many math and science classes as you can. 


Computer science students working in a classroom setting

Your First Year

In your first two years in the computer science program, you will take many of the same general education, science, math and computer science courses as students in the computer engineering program. In addition to the general university requirements, your first year will include courses that build your core computer science foundation. The program also includes classes studying:

  • Algorithms
  • Data structures
  • Programming language concepts
  • Computer architecture
  • Operating systems
  • Software engineering
  • Compiler and translator design
  • A team-based software capstone design project


Although it is possible to earn a Bachelor of Science in Computer Science in four years or eight semesters, many students do take a little longer to graduate. For more information about our curriculum, please visit: http://www.cs.uidaho.edu.


What You Can Do

With a Bachelor of Science (B.S.) in Computer Science from the University of Idaho, the career opportunities are vast. You may pursue a career specializing in:

  • Information assurance
  • Games and virtual environments
  • Embedded systems
  • Distributed and network computing
  • Fault tolerant systems
  • Artificial intelligence
  • Evolutionary computing
  • Computer architecture
  • Software engineering
  • Bioinformatics
  • Information technology
  • Computer theory
  • Operating systems and network

Graduates of the B.S. Computer Science program are also prepared for advanced study in the field. Related graduate degrees offered at the University of Idaho include Master of Science (M.S.) in Computer Science, Doctorate of Computer Science, M.S. BioInformatics, M.S. Computer Engineering and M.S. Mathematics.


One computer science student helping out another with a software application

Opportunities

Many new computer science graduates begin their careers in software development, software testing, computer system, network administration or user support. Average starting salaries range from $60,000 to $80,000.

After a few years of work experience, you’ll have the opportunity to find your niche and discover projects that really drive you. Some graduates will follow a technical focus such as studying and applying Java or Ajax in the development of applications, while others will gravitate toward a management track, such as maintaining the network architecture of a large corporation or leading a team of software developers.

Our graduates work in all regions of the country and globally, including in some of the world's most innovative and successful organizations, such as:

  • Hewlett-Packard
  • Microsoft
  • Boeing
  • Albertson
  • Amazon.com
  • Potlatch Corp
  • Nike
  • Xerox
  • Idaho National Laboratory
  • Micron Technology
  • Intel
  • Chief Architect
  • Fast Enterprises
  • Schweitzer Engineering Laboratories
  • National Security Agency
  • Weyerhaeuser
  • Safeco Insurance
  • United States Navy
  • Extended Systems
  • Itron


A group of students working at the Computer Science Assistance Center

Current Research

Our faculty members are nationally recognized for their research capabilities and expertise. If you’re interested in the research side of science and technology, you may have an opportunity to contribute to research projects happening on campus, such as the following:

  • Multi-agent systems: Dr. Terry Soule is conducting research on evolving multi-agent systems that can cooperatively solve complex problems, including search and exploration problems, classification problems and planning problems.
  • High-assurance computing systems: Dr. Jim Alves-Foss is currently working on multiple research projects; one is studying the design and analysis of high assurance computing systems, including the development of tools and methods for certifying the security properties of these systems.
  • Collaborative virtual environments: Dr. Clinton Jeffery and his team are working to improve Unicon programming language graphics performance on Microsoft Windows Vista and on Macintosh OSX. 


Three computer science students socializing around a table

Activities

If you’re interested in learning more about the industry from an outside perspective, check out these professional organizations:


Hands-On Experience

As a computer science student, you will learn by interacting directly with professors and by working closely with peers on team projects. Our dynamic, hands-on learning environment will teach you how to think strategically and practically. It will prepare you with skills to create tactical solutions to challenges you’ll face daily in your working life. Hands-on experiences may include:

  • Student research:  You can arrange research activities for credit, or in some cases, there may be opportunities to obtain paid positions. We also incorporate a research component into many of our upper-division courses. You'll perform independent study and write a research report on your findings. You may also contribute to research projects by developing application software, evaluating experimental systems, writing technical reports and collaborating with faculty on technical papers.
  • Capstone course:  Here you have the opportunity to experience scenarios that you will encounter on the job. With your team, you’ll work through the systematic software development cycle, including: scope analysis, developing system requirements, designing, coding, testing, implementation and documentation. You’ll get to work directly with real project sponsors. Visit the CS 481 Senior Capstone Design Web sites for specific information of past and current projects:  http://www.cs.uidaho.edu/CS481.html and http://www2.cs.uidaho.edu/~cs481


Facilities

Below are examples of how our computer science students are expanding their horizons and preparing for a successful future, both in and outside the classroom:


Faculty Involvement

Complete list of department faculty.



Axel Krings, Ph.D.
Professor
Axel received his Ph.D. (1993) and M.S. (1991) degrees in computer science from the University of Nebraska - Lincoln, and a Dipl. Ing. (1982) in electrical engineering from the FH-Aachen, Germany. During 1993-1994, he was on the faculty of the Technische Universität Clausthal, Germany, then joined the University of Idaho Computer Science faculty in 1995. While on sabbatical leave from the University of Idaho during 2004-2005, he served as a visiting professor at the Institut d'Informatique et Mathématiques Appliquées de Grenoble, at the Institut National Polytechnique de Grenoble, France. His research interests are in the area of computer and network survivability, fault tolerance and security. In short, it is all about how to design, defend, attack, model and analyze networked computer systems operating in hostile environments. Current research ranges from algorithms and analysis mechanisms for surviving attacks on wireless ad hoc networks, to design of inherently attack-resilient embedded systems, to fault tolerant scheduling algorithms. He has published extensively in his research domain, has organized and chaired conferences and tracks in the area of system survivability, and has been on numerous conference program committees.
» Axel Krings
Bob Rinker, Ph.D.
Associate Professor
Bob earned his bachelor's and master's degrees from the University of Idaho in electrical engineering and his Ph.D. in computer science from Colorado State University. Bob is one of two current faculty who were founding members of the Computer Science Department, which was created in 1981. Bob served as director of the UI Engineering in Boise Program from 1989-1995. Bob's research interests include computer architecture, reconfigurable computing and embedded systems. He is currently involved with software development for the Field Programmable Processor Array (FPPA), a reconfigurable co-processor chip sponsored by NASA and developed at the University of Idaho. The FPPA has been designed and fabricated using a radiation tolerant, low power technology, making it well-suited for spacecraft applications.
» Bob Rinker
Bruce Bolden, M.S.
Senior Instructor
Bruce received his bachelor's degree and master's degree in mechanical engineering from the University of California, Davis. His graduate research involved simulation of the Electron Beam Welding process. Following graduation he worked in the aerospace industry for several companies before joining a small mathematical software company in 1990 as the Engineering Manager. Prior to joining the University of Idaho in 1997, Bruce worked on the development of several Microsoft Windows applications.
» Bruce Bolden
Clint Jeffery, Ph.D.
Associate Professor
Clint completed his B.S. with folks like Notkin and Lazowska at Washington, and his M.S. and Ph.D. under Ralph Griswold at Arizona, finishing in 1993. His doctoral research developed a framework for program execution monitoring, with a substantial subcomponent examining very high level language support for graphics and program visualization. Clint then joined the faculty at UT San Antonio where his time was spent extending his research products to include monitoring C programs and Win32 graphics, and where he was fortunate to co-direct an NSF minority institution infrastructure project. In 1999, Clint joined the faculty at UNLV where he developed the Unicon programming language with support from the National Library of Medicine at NIH, a project which has continued to this day. In 2001, Clint joined the faculty at New Mexico State University where he had the opportunity to broaden his execution monitoring work into the field of automatic debugging and was fortunate to obtain NSF support for a project in the area of educational collaborative virtual environments.
» Clint Jeffery
Jim Alves-Foss, Ph.D.
Professor
Research Interests: Information Assurance including: Computer Security, Formal Methods, Design and Analysis of High Assurance Systems, Cryptographic Protocol Design, Security Policy Engineering, Multi-Level Secure Systems and the MILS Architecture (Multiple Independent Levels of Security) Professional History: Jim's doctoral research focused on the development of a classification of software modules to simplify the specification and verification of the security of those modules. Since that time he has continued to research new techniques to simplify the design and verification of high assurance computing systems. In 2000, he teamed with NSA to work on the Multiple Independent Levels of Security architecture (MILS), which has gained widespread acceptance among the Defense Contractor community and is now an NSA approved approach for the design and analysis of secure systems in environments requiring high robustness. He has published over 80 scholarly papers in conferences and journals and has been PI or Co-PI for grants and contracts totaling over $10 million. He primarily teaches Information Assurance courses, but has also taught Computer Organization and Architecture, Compilers, Programming Languages, Theory of Programming Languages, Operating Systems, Advanced Operating Systems, Derivational Programming and Software Specification. Jim was one of the founding members of the Center for Secure and Dependable Systems and was instrumental in getting the University of Idaho recognized as one of the first seven National Centers of Academic Excellence in Information Assurance Education -- a designation that has been maintained and successfully renewed since 1998. In 2007, he obtained membership in the Institute for Information Infrastructure protection (I3P) for the University of Idaho, a prestigious consortium of universities and non-profit entities working to improve the nation's critical information infrastructures. He serves as the University of Idaho point of contact for these two organizations. He also is a Co-PI and mentor in the NSF Scholarship for Service program, which has been in place at the University of Idaho since 2001 -- a program that exists at only 31 universities nationwide. The University of Idaho SFS program has graduated over 50 scholars who have gone on to jobs in the US government to help secure the nations computing infrastructure. Jim is proud of the students who have worked with him over the years. He has been major professor of 10 doctoral and 23 master's level students who have successfully completed their degrees and moved on to the next phase of their lives. He is currently mentoring several more doctoral and master's level students through their studies. He also has worked with numerous undergraduate students in research and is very proud of the work the undergraduates do as well.
» Jim Alves-Foss
John Munson, Ph.D.
Professor
John is a professor of computer science at the University of Idaho and a member of the Computing Metrology Group. He has extensive experience in measuring software systems, including work with Sun Microsystems and the Jet Propulsion Laboratory that focused on development of software static and dynamic measurement techniques for software test evaluation. He recently published two books that summarize these research experiences, Software Engineering Measurement and Software Specification and Design, both published by CRC Press. John has been actively engaged in research and publication in the areas of software reliability engineering, software metrology, and computer security. He is a member of the Association for Computing Machinery, the IEEE, the IEEE Computer Society and the IEEE Reliability Society. He has been closely associated with the IEEE International Symposium on Software Reliability and has served as the program chair of this conference. He also has been associated with the IEEE International Conference on Software Maintenance and the IEEE International Software Metrics Symposium serving as a member of the program committee and also as program chair for these conferences. He teaches in the software engineering curriculum in the Computer Science Department at both the graduate and undergraduate levels. Actively engaged in research on process control systems for embedded real time systems, John has a special interest in the certification of mission / safety critical embedded systems. He is currently funded by the Office of the Secretary of Defense for research in dynamic software process control on a project entitled Dynamic Kernel Monitoring for Attack Detection and Mitigation.
» John Munson
Mark Manwaring, Ph.D.
Professor, Department Chair
Mark completed a Bachelor of Science degree in Electrical Engineering in 1970. He entered the US Air Force through the ROTC program and earned his wings as a pilot. From 1972 to 1976, he served as a jet aircraft instructor pilot. While on active duty he completed a Master of Science degree in Electrical Engineering, with an emphasis in digital systems. In 1978, Mark completed a Ph.D. program in electrical engineering at Utah State University specializing in digital system design. While in his Ph.D. program, he had the opportunity to work for the USU Aeronomy Group where he contributed to the design of a communication system that was flown on one of the early flights of the Space Shuttle. The next major step in his career took place in 1978 when he joined the Department of Electrical Engineering at Washington State University as an assistant professor. For several years, he directed a service unit to the university called Computer Engineering Services. He was promoted to the rank of associate professor in 1983 and the rank of professor in 1988. Along the way he participated in major events that transformed the department from Electrical Engineering (EE) to Electrical and Computer Engineering (ECE) to the School of Electrical Engineering and Computer Science (EECS). In 1999, Mark accepted a position as a professor in the Department of Electrical and Computer Engineering at Brigham Young University. He co-founded and directed a major research facility called the Brain Instrumentation Laboratory. In 2006, he accepted his current position as chair of the Department of Computer Science at the University of Idaho. Mark has directed the research programs of over 120 graduate students. He has five patents, published a textbook, and has published over 90 professional articles.
» Mark Manwaring
Milos Manic, Ph.D.
Assistant Professor, Director, CS Program at Idaho Falls
Miloš Manić, (pronounced: Mi'losh Mah'nitɕ), is an assistant professor in the Computer Science Department, is an adjunct faculty member in the Electrical and Computer Engineering (ECE) program and the Neuroscience program, and is the program director for the CS and ECE programs in Idaho Falls. In search of academic advancements and fresh powder, he has stayed at the same latitude north of 43°. He moved from his birthplace, City of Fairies (Naissus, Latin name for Niš), to the City of Trees (Boise), only to end up in a city with one of the highest ratios of PhD's per capita in the nation, the City of Falls (Idaho Falls), where he currently enjoys research, teaching, playing jazz and volunteering for the national ski patrol. Miloš received his Ph.D. degree in Computer Science from the University of Idaho, and M.S. and a Dipl.Ing. in Electrical Engineering and Computer Science from the University of Niš, Faculty of Electronic Engineering, Serbia. He is an active member of one of the most international of IEEE Societies, the Industrial Electronics Society (IES). As an IEEE Senior Member, he is the Chair of the IES TCFA Computational Intelligence Subcommittee, and member of the IES Web and Information, Conference Board, and Technical Committee. Miloš is also Chair of the Eastern Idaho IEEE Section Gold and an executive committee member. Currently, he is a guest editor for the IEEE Transactions on Industrial Electronics, and a track or session Co-Chair at several IEEE conferences (ETFA08, IECON08, ICIEA08, HSI08). Miloš works in the area of computational intelligence, focusing on neural networks and fuzzy logic. He has been an NSF invited review panelist, a NSERC invited technical reviewer, an Idaho National Laboratory external technical reviewer, and an invited reviewer for IEEE Transactions on Fuzzy Systems, Neural Networks, and Industrial Informatics, as well as other journals and conferences. He has published over 60 refereed articles in international journals and conferences.
» Milos Manic
Paul Oman, Ph.D.
Professor
Paul is currently working on secure communications and critical infrastructure protection with grants from NSF, NIATT and DARPA. From 2000 to 2002, he served as a senior research engineer at Schweitzer Engineering Laboratories, a company specializing in digital equipment for electric power system protection. Prior to joining SEL he was Chairman of the Computer Science Department, where he held the distinction of Hewlett-Packard Engineering Chair for a period of seven years. He has published over 100 papers and technical reports on computer security, computer science education and software engineering. He is a senior member in the IEEE and is active in both the IEEE and the IEEE Computer Society. He is a past associate editor of IEEE Computer and IEEE Software.
» Paul Oman
Rhonda Zenner
Financial Coordinator, Adjunct Instructor
» Rhonda Zenner
Robert Heckendorn, Ph.D.
Associate Professor
Robert Heckendorn has been a professor at the University of Idaho since 1999. He grew up in Norman, Oklahoma, the son of parents in the newspaper business. In high school he was introduced to Dr. Richard Andree who ran a summer program in computers. He was inspired by Richard's creativity in math and computer science, and dedication to education. Robert graduated in 1979 from the University of Oklahoma with a degree in mathematics, but by then was hooked on computers and really long bike rides. Robert's next move was to Tucson, Arizona, where he studied computer science at the University of Arizona and received his MS degree. While in Arizona, he learned what a wonderful place the desert is. His next move was to Oregon where he worked for four years on Basic language products in Hewlett-Packard's calculator division. He immediately fell in love with the deep forests and crashing surf of the Northwest. Another opportunity in HP took Robert to Fort Collins, Colorado, where he worked on a Common Lisp compiler and software development environments for C, C++, and COBOL. In 1995, after 15 years, Robert left HP, but remained in Fort Collins to work in Evolutionary Computation with Darrell Whitley at Colorado State University and to do some private consulting. He received his Ph.D. in Computer Science in 1999 specializing in epistatic analysis of optimization problems. In Fort Collins, he learned how great it was to hike and bike the Rockies. From there he moved to Moscow, Idaho, joining the University of Idaho which has a strong research emphasis in evolutionary computation and evolutionary biology. Robert works with anything that evolves. His research has included bioinformatics work in phylogenetics, new methods of Markov Chain Monte Carlo sampling, and the simulation of the geneics of the onset of breast cancer. He is currently working on evolutionary approaches to agent based simulations of international conflict and the cooperative behavior of swarms of thousands of robots.
» Robert Heckendorn
Robert Hiromoto, Ph.D.
Professor
» Robert Hiromoto
Terry Soule, Ph.D.
Associate Professor
Terry joined the University of Idaho as a faculty member in 2000. He also is an adjunct faculty member in the Neuroscience and the Bioinformatics and Computational Biology programs. In 1991, Terry received a bachelor's degree in physics from Reed College, followed in 1994 by a master's degree in physics from Washington State University. In 1998, he received a Ph.D. in computer science from the University of Idaho. Following completion of his Ph.D., Terry moved to Minnesota where he joined the St. Cloud State University Department of Computer Science as a faculty member and remained there until returning to the University of Idaho. Terry’s research focuses on the use of simulated evolution to evolve solutions to complex problems. Current projects include evolving control programs that allow multiple agents to cooperate effectively on exploration and classification problems, and evolving control systems modeled on the human nervous system. In addition to teaching and research, Terry has co-chaired several research conferences, including the European Conference on Genetic Programming (EuroGP) and the annual workshop on Genetic Programming Theory and Practice in Ann Arbor, Mich.
» Terry Soule