**Week 1, 2 and 3. **

Click on the Help menu (on the right at the top of the Maple
window), select Introduction, and click on the "New User's Tour".
This also contains useful information for new users.
Spend a few hours this week to find out what kind of commands
are available in Maple. Every hour you spend now will save you
a lot of time in the programming exercises later in the semester.

We will look at this
Maple worksheet on sequences in
class.
Make yourself familiar with the help system of Maple. Suppose
you are interested in differentiation, then type the following
in Maple: ?differentiate and you will quickly find out what the
syntax for differentiation is in Maple, and that the name of
the command is diff. Particularly useful in these help pages
are the examples, and the "See Also" section, which gives you
the names of related commands. This way you also find out
quickly what the syntax for integration is.
Look at the help pages of the following commands, and try examples
for each of them:
expand, factor, factors, sqrfree, gcd, collect, ifactor, igcd, solve,
fsolve, isolve, dsolve, plot, plot3d, tubeplot, add, mul, seq, print,
convert, simplify, series.
We will look at this
worksheet on polynomials and the
use of the quotes: ' ' in
class. If there's enough time we'll look at
one of the following worksheets:
worksheet on
rational functions,
worksheet on matrices,
worksheet on modular
arithmetic,
Study the remaining worksheets for next time.
Study the following worksheet
(this worksheet also contains a few examples about programming).
Test yourself by doing the first 20 exercises from the following
list of exercises, which you can view as a
postscript file
or as a pdf file.
Compare your results with
the answers.
The following text file
(which you can read into Maple by Maple's read command)
contains the homework for week 1. Study the Maple commands
in this file. What you need to turn in is a modification
of an algorithm given in this file.
** Turn in date: Friday September 10. **
We will look at this worksheet
number systems in class.
Write an implementation of Karatsuba multiplication. ** Turn
it in on Friday September 17. **

We will study this worksheet on gcd's
and Extended Euclidean Algorithm
in class.
We have covered most of chapters 1 and 2 of the book.
Study these two chapters carefully, and make sure you
understand them. If some things are not clear
please let me know.
Note that some of the algorithms are
different from the ones in the worksheets, the ones in the
worksheets tend to have fewer loops and
more recursion. The actual computations will be equivalent
though.
**Week 4, 5, 6, 7 and 8. **

We will study this worksheet on FFT
and worksheet on p-adic numbers
in class.

** Turn in homework: **

Use the Maple procedure "Factors(f) mod p" and the HenselLift procedure in
the worksheet on p-adic numbers to factor the following polynomial in the same way as in
the worksheet:

f:=x^12-32*x^10-36*x^9+426*x^8+780*x^7-148*x^6
+1860*x^5+5901*x^4+6996*x^3+26308*x^2-32640*x+56056;
Note: you have to choose a prime number p such that f will be square-free modulo p
(i.e. all factors in Fp[x] have multiplicity 1).
** More turn in homework: **

Write an algorithm for Hensel lifting in the ring Q[[x]]. Do this in the same way
as in the worksheet on p-adic numbers. The following worksheet contains an
algorithm for Hensel lifting in Q[[x]] that only works when the factors have degree 1:
worksheet on x-adic Hensel lifting, i.e. Hensel lifting
with formal power series.

The Chinese Remainder Theorem,
Squarefree factorization. Implement squarefree factorization
for Fp[x].
So far we have covered chapters 1,2,3 of the book, and sections
4.2 and 4.4.
Resultants
Solutions of a polynomial.
Solving equations with resultants.
More applications of resultants and
properties of resultants,
and one more application:
factorization over algebraic number fields.
Turn in the following assignment about the
evolute and these three assignments.
Turn in date: Friday Oct 29.

**Week 9 and 10. **

Factorization in Fp[x].

When f in Z[x] then Landau-Mignotte bound gives you an upper bound
for the absolute value of the coefficients of any factor g in Z[x] of f.
You can find this bound in the following file, available as
postscript file
or as a pdf file.
We can use this bound to determine how many Hensel lift steps we need to
do. This completes the algorithm of factorization in Q[x].
Other method of factorization in Q[x].

So far we have covered the material in chapters 1, 2, 3, 4 and 5.
**Week 11. **

** Group work: ** Implement factorization in Fp[x], square-free factorization in Q[x]
and Hensel lifting (these two can be copied from the worksheets above), the
Landau-Mignotte bound, and factorization in Q(alpha)[x] where alpha is the
RootOf an irreducible polynomial (the easiest is to use evala(Norm(..)) but
you can also use a resultant).

Study the following worksheet on
Polynomial Ideals and Groebner Basis.
** Assignment: ** implement the Buchberger algorithm, which is described in the last
section of this worksheet.

Can you think of any reason why the Buchberger algorithm
should terminate? Think about that question for a while,
and after that read this worksheet on
monomial ideals to find the answer.

**Week 12-15. Applications of Groebner basis. **

Some applications .