\documentclass[11pt]{article}
\usepackage{amsmath,amssymb,amsthm,amsfonts,amscd,tikz}
\usepackage{tikz-cd}
\usepackage{multicol}
\usepackage{enumerate}
\usepackage{hyperref}
\usepackage{aliascnt}
\usepackage{graphicx}
\usepackage{subcaption}
\usetikzlibrary{arrows,matrix,calc,decorations.pathmorphing}
\usepackage{mathabx}
\usepackage{sagetex}
\usepackage{mathrsfs}
\usepackage{bbm}
\usepackage{microtype}
\usepackage[margin=1in]{geometry}
\usepackage{wrapfig}
\usepackage{cite}
\usepackage{listings}
\definecolor{dblackcolor}{rgb}{0.0,0.0,0.0}
\definecolor{dbluecolor}{rgb}{.01,.02,0.7}
\definecolor{dredcolor}{rgb}{0.6,0,0}
\definecolor{dgraycolor}{rgb}{0.30,0.3,0.30}
\definecolor{lightyellow}{rgb}{1,1,.86}
\definecolor{gray}{rgb}{0.6,0.6,0.6}
\newcommand{\dblue}{\color{dbluecolor}}
\newcommand{\dred}{\color{dredcolor}}
\newcommand{\dblack}{\color{dblackcolor}}
\newcommand{\dr}{\dred\bf}
\lstdefinelanguage{Sage}[]{Python}
{morekeywords={True,False,sage,singular},
sensitive=true}
\lstset{frame=single,
showtabs=False,
showspaces=False,
showstringspaces=False,
backgroundcolor=\color{lightyellow},
commentstyle={\ttfamily\color{dredcolor}},
keywordstyle={\ttfamily\color{dbluecolor}\bfseries},
stringstyle ={\ttfamily\color{dgraycolor}\bfseries},
language = Sage,
basicstyle={\scriptsize \ttfamily},
}
\newcommand{\BB}[1]{\mathbb{#1}}
\newcommand{\script}[1]{\mathcal{#1}}
\newcommand{\curly}[1]{\mathscr{#1}}
\newcommand{\cat}[1]{\textbf{\emph{#1}}}
\renewcommand{\frak}[1]{\mathfrak{#1}}
\newcommand{\del}[1]{\frac{\partial}{\partial{#1}}}
\newcommand{\ddel}[2]{\frac{\partial{#1}}{\partial{#2}}}
\newcommand{\floor}[1]{{\lfloor #1 \rfloor}}
\newcommand{\free}[1]{\left\langle#1\right\rangle}
\newcommand{\CC}{\BB{C}}
\newcommand{\RR}{\BB{R}}
\newcommand{\NN}{\BB{N}}
\newcommand{\QQ}{\BB{Q}}
\newcommand{\ZZ}{\BB{Z}}
\newcommand{\PP}{\BB{P}}
\renewcommand{\AA}{\BB{A}}
\newcommand{\HH}{\BB{H}}
\newcommand{\DD}{\BB{D}}
\newcommand{\TT}{\BB{T}}
\newcommand{\FF}{\BB{F}}
\newcommand{\RP}{\RR\PP}
\newcommand{\CP}{\CC\PP}
\renewcommand{\SS}{\BB{S}}
\newcommand{\sF}{\script{F}}
\newcommand{\sG}{\script{G}}
\renewcommand{\O}{\script{O}}
\newcommand{\cF}{\curly{F}}
\newcommand{\cG}{\curly{G}}
\newcommand{\cH}{\curly{H}}
\newcommand{\cO}{\curly{O}}
\newcommand{\cL}{\curly{L}}
\newcommand{\st}{\colon}
\newcommand{\VF}{\frak{X}}
\newcommand{\ld}{\curly{L}}
\newcommand{\im}{\operatorname{im}}
\newcommand{\re}{\operatorname{Re}}
\newcommand{\Int}{\operatorname{Int}}
\newcommand{\diam}{\operatorname{diam}}
\newcommand{\spec}{\operatorname{spec}}
\newcommand{\proj}{\operatorname{proj}}
\newcommand{\rank}{\operatorname{rank}}
\newcommand{\codim}{\operatorname{codim}}
\newcommand{\colim}{\operatornamewithlimits{colim}}
\newcommand{\nullity}{\operatorname{nullity}}
\newcommand{\diag}{\operatorname{diag}}
\newcommand{\supp}{\operatorname{Supp}}
\newcommand{\Aut}{\operatorname{Aut}}
\newcommand{\grad}{\operatorname{grad}}
\newcommand{\curl}{\operatorname{curl}}
\newcommand{\sgn}{\operatorname{sign}}
\newcommand{\sing}{\operatorname{sing}}
\newcommand{\coker}{\operatorname{coker}}
\newcommand{\tr}{\operatorname{tr}}
\newcommand{\GL}{\operatorname{GL}}
\newcommand{\SL}{\operatorname{SL}}
\newcommand{\lie}{\operatorname{Lie}}
\newcommand{\Div}{\operatorname{Div}}
\renewcommand{\div}{\operatorname{div}}
\newcommand{\gal}{\operatorname{Gal}}
\newcommand{\ord}{\operatorname{ord}}
\newcommand{\res}{\operatorname{res}}
\newcommand{\Hom}{\operatorname{Hom}}
\newcommand{\op}{\operatorname{op}}
\newcommand{\nil}{\operatorname{nil}}
\newcommand{\Frac}{\operatorname{Frac}}
\renewcommand{\sp}{\operatorname{sp}}
\newcommand{\D}{\,d}
\newcommand{\into}{\scalebox{0.8}{$\mathrel{
\raisebox{-.25em}{\reflectbox{\rotatebox[origin=c]{0}{$-$}}}
\hspace*{-0.435em}
\raisebox{.05em}{\reflectbox{\rotatebox[origin=c]{90}{$-$}}}
}$}}
\newtheorem{thmc}{pleasedontusethistheoremenvironment}[section]
\makeatletter
\newcommand{\newlabeledtheoremenv}[3][plain]{
\theoremstyle{#1}
\newaliascnt{#2}{thmc}
\newtheorem{#2}[#2]{#3}
\aliascntresetthe{#2}
\@namedef{#2autorefname}{#3}
}
\makeatother
\newlabeledtheoremenv[plain]{thm}{Theorem}
\newlabeledtheoremenv[plain]{lem}{Lemma}
\newlabeledtheoremenv[definition]{rem}{Remark}
\newlabeledtheoremenv[plain]{prop}{Proposition}
\newlabeledtheoremenv[plain]{cor}{Corollary}
\newlabeledtheoremenv[definition]{defn}{Definition}
\newlabeledtheoremenv[definition]{ex}{Example}
\newlabeledtheoremenv[plain]{conj}{Conjecture}
\newlabeledtheoremenv[definition]{quest}{Question}
\newlabeledtheoremenv[definition]{note}{Note}
\newlabeledtheoremenv[definition]{fact}{Fact}
\newtheorem*{prob}{Problem}
\theoremstyle{plain}
\newtheorem*{claim}{Claim}
\theoremstyle{remark}
\newtheorem*{reason}{Reason}
\newcommand{\mytitle}{GSoC 2015 Application}
\newcommand{\mycontact}{\small {Department of Mathematics, University of Washington, Seattle WA 98195}}
\newcommand{\myauthor}{\sc {Travis Scholl}}
\newcommand{\myemail}{\small {\href{mailto:tscholl2@uw.edu}{tscholl2@uw.edu}}}
\begin{document}
\title{\bfseries\sffamily \mytitle \\ \vspace*{-0.3cm}}
\author{\sc \myauthor \\ \myemail \\ \mycontact}
\maketitle
\section{Background}
\subsection{Math}
\indent
I am a second year graduate student in mathematics at the University of Washington in Seattle. I am working towards a PhD. Academically, I am primarily interested in algebraic number theory, cryptography, and arithmetic of elliptic curves. I have taken several courses and independent studies in these fields as well as algebraic and arithmetic geometry.
\subsection{Sage}
\indent
I enjoy using Sage in my work where applicable. For example, computing primes of good reduction for a given variety or finding torsion points on an elliptic curve. While sometimes I believe in working through an explicit computation by hand, I often feel it's much better to verify the solution with Sage. The Python syntax and built in Sage packages make this very straightforward.
I am also constantly recommending Sage to my colleagues for their computations. I believe Sage is a great tool for a wide variety of mathematicians because many problems have computational aspects which can be efficiently solved using some package in Sage. Because of this, I would love to help contribute to Sage. Not only would it give me the opportunity to give back to the software that has helped me, but also add and refine functionality in order to help other researchers in similar situations.
\subsection{Programming}
\indent
Coding is a fun hobby of mine that I have enjoyed since college. I graduated from University of Oregon with a minor in computer science where I took standard courses on data structures and algorithms. I am regularly working on some type of pet project in my spare time. I am most interested in web based applications and database design. I have also worked with others on their projects including an indoor positioning system, a reddit bot, and educational websites for math courses.
My main platform is Windows but I regularly use linux based virtual machines and remote servers to work on various projects. My most comfortable programming languages currently are Python, Go, and CoffeeScript/Javascript. I have been using Sage since I came to University of Washington and would love to learn more about the contribution system and the organizational structure of the code.
\vspace*{-0.2cm}
\begin{center}
{\noindent\rule{8cm}{.5pt}}
\end{center}
\vspace*{-0.2cm}
\section{Project Outline}
\subsection{Title}
\indent
Adding and Optimizing Functionality in Algebraic Number Theory
\subsection{Description}
\indent
The point of this project will be to improve the Algebraic Number Theory (ANT) package in Sage. Specifically, Sage does not implement the Chinese Remainder Theorem (CRT) with ideals, only with specific elements. However, Magma's implementation allows for the use of ideals.\footnote{See \url{http://magma.maths.usyd.edu.au/magma/handbook/text/174\#1378}.} Also Sage's current Hermite Normal Form (HNF) algorithm only works over PIDs but PARI's algorithm works over orders in number fields.\footnote{See \url{http://pari.math.u-bordeaux.fr/pub/pari/manuals/2.7.0/users.pdf}, page 176.}
\subsection{Details}
\begin{enumerate}
\item Implement CRT for ideals as general as possible.
\item Compare implementations between PARI's and Magma's HNF algorithm in order to decide whether to wrap one or write a basic implementation into Sage directly.
\item Implement all necessary prerequisites for the HNF algorithm such as module theory over rings of integers for arbitrary number fields.
\item Write (or wrap) an implementation of the HNF algorithm and submit to Sage.
\end{enumerate}
\subsection{Schedule}
\begin{enumerate}[$\bullet$]
\item May 25th - June 5th
I will be in school which will take take most of my time. However, I plan on using part of this period to review Sage’s internal organization and to get used to its established development process by meeting with my mentor and reading through the documentation.
\item June 6th - June 10th
Find sources which describe a CRT algorithm for use with general ideals. Also figure out if all available tools needed are already in Sage. Open a ticket for generalizing the current CRT.
\item June 11th - June 25th
Work on writing a working example of CRT with ideals. Try to generalize as much as possible. This will probably require working through a few sections of Cohen's book "Advanced topics in computational number theory".
\item June 26th - July 3rd
Review the basic CRT implementation with a mentor.
\item July 5th - July 11th
Start reading about HNF in Cohen's book and any other good resources to get an overview of the algorithm.
\item July 12th - July 19th
Begin researching into HNF algorithm implementations in PARI and Magma. The goal will be to compare speed/quality between the two and decide whether to try and wrap existing function or writing a new one.
A few days will be spent learning enough PARI/Magma to run and evaluate the algorithms. At least one day will be compiling all the data and reviewing it with a mentor to decide on the best course of action.
\item July 20th - July 27th
Map out any foundational requirements required for using HNF in Sage. For example, there may be missing parts of module theory over rings of integers of number fields that are necessary before writing the HNF algorithm.
\item July 28th - August 16th
Most likely this time will be devoted to wrapping the HNF from another library into Sage. Other options include possibly writing a basic, but likely slower, algorithm directly in Sage.
The reason for the expanded time for wrapping is due to the age and unfamiliarity of PARI code.
\item August 17th - August 24th
Adjustment time for when previous steps take longer than expected.
\end{enumerate}
\subsection{Risk Management}
The most likely problem will be time management. Implementing and optimizing CRT or HNF could take more time than expected. Also there is the worry that I could spend time implementing basic CRT or HNF algorithms for Sage only to find it will be too slow to use. In which case I could switch to wrapping the existing functions in PARI or Magma.
\vspace*{-0.2cm}
\begin{center}
{\noindent\rule{8cm}{.5pt}}
\end{center}
\vspace*{-0.2cm}
\end{document}